草庐IT

hadoop - HIVE 数据透视和求和

我有一个表,我试图找出如何根据第二列中的值进行数据透视和求和。示例输入:|own|pet|qty||---|---|---||bob|dog|2||bob|dog|3||bob|dog|1||bob|cat|1||jon|dog|1||jon|cat|1||jon|cat|1||jon|cow|4||sam|dog|3||sam|cow|1||sam|cow|2|示例输出:|own|dog|cat|cow||---|---|---|---||bob|6|1|||jon|1|2|4||sam|1||3| 最佳答案 使用case和sum

sql - 获取 Hive 中所有列的 NULL 百分比

我想获取Hive表中NULL值的百分比。有没有一种简单的方法可以做到这一点而不必枚举查询中的所有列名?在这种情况下,大约有50k行和20列。提前致谢!类似于:SELECTcount(each_column)/count(*)FROMTABLE_1WHEREeach_column=NULL; 最佳答案 如果您使用代码执行此操作,则需要列出列。这是一种方法:selectavg(casewhencol1isnullthen1.0else0.0end)ascol1_null_p,avg(casewhencol2isnullthen1.0el

sql - 使用描述创建 Hive 表

Hive建表时应该在什么地方添加表描述?Tablename:"Orders"TableDescription:"OrdersfromVendorABC." 最佳答案 您应该在命令中使用[COMMENTtable_comment]关键字。例子:CREATETABLEIFNOTEXISTSorders(idString,nameString)COMMENT'OrdersfromVendorABC.'ROWFORMATDELIMITEDFIELDSTERMINATEDBY'\t'LINESTERMINATEDBY'\n'STOREDAST

sql - Hive 查询中的临时加入(时间上非常接近的事件)

我需要一个我很难搞清楚的配置单元查询。我有一个看起来像这样的时间序列:timesourceword1word2...etc2012-02-0123:43:16.998824300012B3BFAF02012-02-0123:43:16.999356100022326ABAA2012-02-0123:43:16.999887900022327ABAA我需要一个查询,如果一个源中的记录满足特定条件,除了该记录之外,它还应该及时返回一个或多个记录来自第二个source满足一组不同的条件。到目前为止,我的尝试是这样的:SELECTtimeFROMmessagesCJOINmessagesDon

hadoop - 使用 HQL 在前面附加零

输入:1092-04-1我已将上述数据作为字符串加载。如果第一个字符串的长度小于5,我需要在前面附加零。类似地,如果第二个字符串的长度小于3,如果第三个字符串的长度小于2,则使用HQL。期望的输出:01092-004-01尝试使用以下查询,0仅附加到第一个字符串。selectconcat(substr("00000",0,10-length(colname)),colname)fromtablename;输出:01092-04-1。请提出解决方案。TIA。 最佳答案 selectconcat_ws('-',lpad(your_col

scala - 如何使用配置单元上下文有效地查询 spark 中的配置单元表?

我有一个包含时间序列数据的1.6THive表。我正在使用Hive1.2.1和scala中的Spark1.6.1。以下是我在代码中的查询。但我总是遇到Java内存不足错误。valsid_data_df=hiveContext.sql(s"SELECTtime,total_field,sid,year,dateFROMtablenameWHEREsid='$stationId'ORDERBYtimeLIMIT4320000")通过一次从配置单元表中迭代选择几条记录,我试图在结果dataframe上做一个滑动窗口我有一个由4个节点组成的集群,具有122GB内存和44个vCore。我正在使用4

scala - 使用 spark 在 hive 中流式传输数据存储

我正在创建一个应用程序,在其中获取流式数据,这些数据进入kafka,然后在spark上。使用数据,应用一些登录,然后将处理后的数据保存到配置单元中。数据速度非常快。我在1分钟内获得50K条记录。Spark流中有1分钟的窗口,它处理数据并将数据保存在配置单元中。我的问题是生产前瞻性架构可以吗?如果是,我如何将流数据保存到配置单元中。我正在做的是,创建1分钟窗口数据的数据框,并使用将其保存在配置单元中results.write.mode(org.apache.spark.sql.SaveMode.Append).insertInto("stocks")我还没有创建管道。可以吗,还是我必须修

hadoop - Hive 的隐式连接总是内部连接吗?

joindocumentationforHive鼓励使用隐式连接,即SELECT*FROMtable1t1,table2t2,table3t3WHEREt1.id=t2.idANDt2.id=t3.idANDt1.zipcode='02535';这是否等同于SELECTt1.*,t2.*,t3.*FROMtable1t1INNERJOINtable2t2ONt1.id=t2.idINNERJOINtable3t3ONt2.id=t3.idWHEREt1.zipcode='02535',或者上面会返回额外的记录吗? 最佳答案 并不总是

hadoop - 如何在 HIVE 中将日期 2017-sep-12 转换为 2017-09-12

我在转换hive中的日期时遇到一个问题。我需要将2017-sep-12转换为2017-09-12。我怎样才能在HIVE中实现这一点 最佳答案 使用unix_timestamp(stringdate,stringpattern)将给定的日期格式转换为自1970-01-01以来的秒数。然后使用from_unixtime()转换为给定的格式:hive>selectfrom_unixtime(unix_timestamp('2017-sep-12','yyyy-MMM-dd'),'dd-MM-yyyy');OK12-09-2017

python - spark 作业中不存在配置单元表

我在EMR中使用HiveMetastore。我可以通过HiveSQL或SparkSQL手动查询表。但是当我在SparkJob中使用同一个表时,它显示找不到表或ViewFile"/usr/lib/spark/python/lib/pyspark.zip/pyspark/sql/utils.py",line69,indecopyspark.sql.utils.AnalysisException:u"Tableorviewnotfound:`logan_test`.`salary_csv`;line1pos21;'Aggregate[unresolvedalias(count(1),None