草庐IT

variables - 获取当前日期并将其设置为变量,以便将其用作 HIVE 中的表名

我想以YYMMDD的形式获取当前日期,然后将其设置为变量以便将其用作表名。这是我的代码:setdates=date+%Y-%m-%d;CREATEEXTERNALTABLEIFNOTEXISTSdates(idSTRING,regionSTRING,citySTRING)但是这个方法不行,因为好像赋值不对。有什么想法吗? 最佳答案 Hive不计算变量,它按原样替换它们,在您的情况下,它将正是这个字符串'date+%Y-%m-%d'。也不可能使用像current_date()这样的UDF来代替DDL中的表名。解决方案是在shell中计

datetime - 创建具有不规则日期/时间格式列的 Hive 表

我必须从csv创建一个Hive表,其中两列有一个日期/时间字段,格式如下:11/28/20188:35:23PM或11/30/20185:02:17AM等例如:responseidprocess_startprocess_endstatus2611/28/20188:35:23PM11/30/20185:02:17AMcomplete我知道我可以先将这些字段创建为字符串,然后再执行如下操作:insertintotablenewtableselectprocess_start,from_unixtime(unix_timestamp(process_start,'dd-MM-yyyyHH

sql - 从分组查询中删除连接操作

我有一个看起来像这样的表:usr_idquery_ts123452019/05/13 02:061234442019/05/15 04:061234442019/05/16 05:06123452019/05/16 02:06123452019/05/15 02:06它包含一个用户ID,以及他们何时运行查询。表中的每个条目代表该ID在给定时间戳运行1个查询。我正在尝试制作这个:usr_idday_1day_2…day_3012345311315123444234114我想显示每个ID在过去30天内每天运行的查询数量,如果当天没有运行查询,它将是0。这是我提出的查询的一部分,SELECT

sql - Hive 相对于同一表中的其他数组列对数组列进行排序

我在hive中有一个表,其中2列为col1array和col2array.输出如下图col1col2[1,2,3,4,5][0.43,0.01,0.45,0.22,0.001]我想按升序对col2进行排序,并且col1也应该相应地更改其索引,例如col1col2[5,2,4,3,1][0.001,0.01,0.22,0.43,0.45] 最佳答案 分解两个数组,排序,然后再次聚合数组。在collect_list之前的子查询中使用sort对数组进行排序:withyour_dataas(selectarray(1,2,3,4,5)asc

hadoop - HiveQL 查询性能优化

随着Hive查询中JOINS数量的增加,查询分多个阶段运行,执行时间非常长。如何提高查询性能。有什么参数需要设置吗? 最佳答案 所有大表首先应该按连接顺序放在最后一个:选择小。,大。从小JOINlargeONsmall.joinkey=large.joinkey;您可以使用提示告诉optimazier哪个表最大:SELECT/*+STREAMTABLE(large)*/small.*,large.*FROMlargeJOINsmallONsmall.joinkey=large.joinkey;其次,小表可以在通过Map-sidejo

hadoop - 配置 Hive 以本地模式运行

您好,我正在尝试以本地模式运行Hive,我已经设置了HIVE_OPTS环境变量exportHIVE_OPTS='-hiveconfmapred.job.tracker=local-hiveconffs.default.name=file://///hivelocal/tmp-hiveconfhive.metastore.warehouse.dir=file://///hivelocal/warehouse-hiveconfjavax.jdo.option.ConnectionURL=jdbc:derby:;databaseName=//hivelocal/metastore_db;cr

hadoop - 使用 UDF 的输出设置 Hive 变量

我正在尝试使用UDF函数的输出设置一个Hive变量,这样我就可以稍后在我的.hql脚本中的INSERTINTOmyTable中使用该值。这是myTable的DDL:CREATETABLEmyTable(CreationTimestampTIMESTAMP,TablenameCHAR(50),LastExtractedTimestampTIMESTAMP,OozieJobIDCHAR(40));以下无效:sethiveconf:ct=selectcurrent_timestamp;INSERTINTOmytableVALUES('${hiveconf:ct}','test','2015-

regex - Hive:在字符的第一次出现和最后一次出现之间提取字符串

我有一个Hive表列,其中的字符串由“-”分隔,我需要提取第一次和最后一次出现的“-”之间的字符串+-----------------+|col1|+-----------------+|abc-123-na-00-sf||123-abc-01-sd||123-abcd-sd|+-----------------+Requiredoutput:+-----------+|col1|+-----------+|123-na-00||abc-01||abcd|+-----------+请建议一些正则表达式来提取所需的输出。谢谢 最佳答案

sql - 多列和多行的 Hive/SQL 计数出现次数

我正在寻找一种计算出现次数的智能方法。这是一个例子:UserIDCityIDCountryIDTagID1000001305100001130610000022071000002408100001140610000214051000021206我想做什么:我想按列计算每个用户值的出现次数。最后,我想要一个表格来显示有多少用户具有不同的特征。结果应该看起来像这样-或多或少Different_CityIDDifferent_CountryIDsDifferent_TagIDs132解释:Different_CityIDs:仅UserID100000具有不同的CityIDDifferent_

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