为什么布尔字段在Hive中不起作用?
我的蜂巢表中有一个列,哪个数据类型为布尔值.当我尝试从CSV导入数据时,它存储为null. 这是我的示例表: CREATE tABLE if not exists Engineanalysis( EngineModel String, EnginePartNo String , Location String, Position String, InspectionReq boolean) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'; 我的示例数据: AB01,AS01-IT01,AIRFRAME,,0 AB02,AS01-IT02,AIRFRAME,,1 AB03,AS01-IT03,AIRFRAME,,1 AB04,AS01-IT04,AIRFRAME,,1 AB05,AS01-IT05,HEAD,,1 AB06,AS01-IT06,HEA
20 2024-04-01
编程技术问答社区
为蜂巢中的表格中新增加的记录更新唯一的ID列
我有一个表,我希望在其中插入新记录,以自动添加唯一的标识符.考虑到我有针对已经创建的唯一标识符的列. 解决方案 Hive无法更新表,但是您可以创建一个临时表或覆盖第一个表. 您也可以使用concat函数连接两个不同的列或字符串. 这是示例 function :concat(string A, string B…) return: string hive> select concat(‘abc’,'def’,'gh’) from dual; abcdefgh hql&result insert overwrite table stock select tradedate,concat('aa',tradetime),stockid ,buyprice,buysize ,sellprice,sellsize from stock; 20130726 aa094251 204001 6.6 152000 6.605 100 2013
10 2024-03-30
编程技术问答社区
在蜂巢表的顶部添加一些线条
我有一个在Hive中的表格(之前): AB_dimp|SF_0060H00000nhSrmQAE|EBA Order 1127735|Execute|New From AB_dimp|SF_0060H00000nhSwkQAE|EBA Order 1127725|Execute|New From AB_Dimp|SF_0060H00000nhSyDQAU|EBA Order 1127728|Execute|New From ,我想以这种形式将这3行以这种形式出现在该表的顶部: : [Yellow] Cat ID|AN_Net| [network] AB_dimp|SF_0060H00000nhSkPQAU|EBA Order 1127708|Execute|New From AB_DIMP|SF_0060H00000nhSl8QAE|EBA Order 1127709|Execute|New From AB_DIMP|SF_0060H00000nhSrmQAE|EBA
16 2024-03-30
编程技术问答社区
Hive alter table change column name gives 'NULL' to the renamed column.
我试图将表中的现有列重命名为新的列.但是在名称更改之后,新列仅给我" null"值. 木板中表的存储格式. 例如, '用户'是字符串数据类型的"测试"表中的列.插入具有" John"的示例记录. Select user from Test; 结果:约翰 我在没有更改任何数据类型的情况下将"用户"重命名为" user_name". ALTER TABLE Test CHANGE user user_name String; Select user_name from Test; 结果:null 请让我知道如何解决此问题? 在这种情况下,MSCK维修表是否有任何用途? 我需要再次重新加载此表以解决此问题吗? 问候, Adarsh K S 解决方案 您可以做的是添加新字段,执行一个插入覆盖物,然后删除旧字段. 这样的东西: ALTER TABLE temp.Test ADD COLUMNS (user_new
10 2024-03-30
编程技术问答社区
用HDFS的变化更新Hive的外部表
可以说,我从file myfile.csv(位于HDFS中)创建了Hive外部表" mytable". myfile.csv每天都更改,然后我也有兴趣每天更新一次" mytable". 是否有任何HiveQl查询每天都告诉您更新表? 谢谢. P.S. 我想知道它是否与目录的工作方式相同:可以说,当" mydir"包含10个文件时,我从HDFS目录" mydir"创建Hive分区.第二天" mydir"包含20个文件(添加了10个文件).我应该更新蜂巢分区吗? 解决方案 基本上有两种类型的表. 每当您创建表数据时,将由Hive Warehouse管理一个由Hive Warehouse管理的表. 你can not have latest data in the query output. 其他是蜂巢will not copy its data to internal warehouse的外部表格. 因此,每当您在桌子上发射查询时,然后从
24 2024-03-30
编程技术问答社区
如何在HIVE中从日期中减去月份
我正在寻找一种可以帮助我从蜂巢中的日期减去数月的方法 我有一个日期2015-02-01.现在我需要从这个日期开始减去2个月,以便结果应为2014-12-01. 你们可以在这里帮我吗? 解决方案 select add_months('2015-02-01',-2); 如果您需要回到生成月的第一天: select add_months(trunc('2015-02-01','MM'),-2); 其他解决方案 请尝试添加_ months日期功能,并通过-2几个月.内部add_months使用Java Calendar.ADD方法,该方法支持添加或减去(通过传递负整数). 其他解决方案 - 在Hive中,如果日期格式为yyyy-mm-dd格式,则在月和年门上使用差异真的很容易 from_unixTime(unix_timestamp(2015-02-01,'yyyy-mm-dd') - 2*30*24*60*60,'yyyy-mm-dd');
18 2024-03-30
编程技术问答社区
按不可见列排序的蜂巢
假设我的表格test a,b和c和test2带有同一列.我可以创建表测试的视图,并从表测试中通过字段C进行连接在一起,而无需在最终输出中显示它吗?就我而言: CREATE VIEW AS test_view AS SELECT a,b FROM (SELECT * FROM test ORDER BY c) JOIN test2 ON test.a =test2.a; 好吧,我对其进行了测试,这是不可能的,因为洗牌阶段,所以也许还有另一种解决方案可以做到这一点?桌子太大,无法进行广播加入. 当然我可以做 CREATE VIEW AS test_view AS SELECT a,b,c FROM test JOIN test2 ON test.a =test2.a ORDER BY c ,然后 CREATE VIEW AS final_view AS SELECT a,b FROM test_view; 但是该解决方案不是最佳的 有什么想法吗?
10 2024-03-30
编程技术问答社区
文件名的一部分作为Hive表中的一个列
我想将文件名的第一部分作为我的蜂巢表中的列 My filename is : 20151102114450.46400_Always_1446482638967.xml 我在Microsoft Azure的Hive中写了一个查询(以下查询),以获取第一部分,即20151102114450 但是,当我运行查询时,我将获得输出为20151102164358 select CAST(regexp_replace(regexp_replace(regexp_replace(CAST(CAST(regexp_replace(split(INPUT__FILE__NAME,'[_]')[2],'.xml','') AS BIGINT) as TimeStamp),':',''),'-',''),' ','') AS BIGINT) as VERSION 谁能告诉我我要去哪里出错,需要纠正什么? 解决方案 我在Cloudera尝试了一下,希望它也应该在Azure中使用
12 2024-03-24
编程技术问答社区
当蜂巢插入物在中途失败时会发生什么?
假设插入物预计将在Hive中加载100个记录,并且已经插入了40个记录,并且由于某种原因,该插入物已失败.交易会完全回滚,删除40个记录的记录吗? 还是即使插入查询失败后,我们也会在蜂巢表中看到40个记录? 解决方案 操作是原子(甚至对于非酸性表):如果您使用HiveQL插入或重写数据,则将数据写入临时位置,并且只有当命令成功的文件移动到表位置(旧文件)在INSERT OVERWRITE的情况下被删除.如果SQL语句失败,则数据保留在语句执行之前. 关于S3 Direct Writes的注意:直接写入S3功能应禁用以允许Hive仅在操作成功时才​​写入临时位置并重写目标文件夹: -- Disable AWS S3 direct writes: set hive.allow.move.on.s3=true; 还请阅读本文档,以获取更多详细信息,以了解哪些酸在并发模式和局限性下受支持:什么是酸,为什么要使用它? 直到蜂巢0.13,在分区级别提供了原子度,一致性
22 2024-03-18
编程技术问答社区
将多个数组合并为一个地图
我有一些看起来像这样的数据(示例): | prov_id | hotel_id | m_id | apis_xml | company_id | yyyy_mm_dd | |---------|----------|------|----------|------------|------------| | 945 | 78888 | 3910 | [5] | 998 | 2020-05-20 | | 1475 | 78888 | 6676 | [1,2,4] | 37 | 2020-05-20 | | 1475 | 78888 | 6670 | [1,2,4] | 37 | 2020-05-20 | | 945 | 78888 | 2617 | [5] | 998 | 2020-05-20 | 我想找到每个酒店的最低 apis_xml值,并将
16 2024-03-06
编程技术问答社区
蜂巢中的多个侧视和爆炸产生的行数重复
我正在使用4列 ref_no 货币 量 标签 ebdr001 usd^usd^usd^usd^usd^ 240^300^210^500^ dbc^oda^ica^dra 我想要这种格式的数据 ref_no 货币 量 标签 ebdr001 usd 240 dbc ebdr001 usd 300 oda ebdr001 usd 210 ICA ebdr001 usd 500 dra 结果我得到了 ref_no 货币 量 标签 ebdr001 usd 240 dbc ebdr001 usd 240 dbc ebdr001 usd 240 dbc ebdr001 usd 240 dbc ebdr001 usd 300 oda ebdr001 usd 300 oda ebdr001 usd 300 oda ebdr001 usd 300 oda ebdr001 usd 210 ICA ebdr001 usd 210 ICA ebdr00
12 2024-03-06
编程技术问答社区
阵列总和的HIVE查询
我有以下查询. Select split(Salary, '\|') as salaryEmp from tableA它可以正常工作,并给我一个数组字符串,如["1089","1078"]. 我想添加此数组字符串的值.我无法将其键入将其输入整数并总结.可以为此建议一种合适的方法. 解决方案 使用explode() + lateral view: select sum(cast(salary as int)) sum_salry from ( select split('1089|1078', '\\|') SalaryArray ) s lateral view explode (SalaryArray) a as Salary; OK 2167 其他解决方案 select sum(e.col) as sum_Salary from salaryEmp lateral view explode (split(Salary,'\\|')) e
16 2024-03-06
编程技术问答社区
HiveSQL访问JSON-array值
我有一个在Hive中的表,该表是通过从HDFS中的序列文件读取而生成的.这些序列文件是 json ,看起来像这样: {"Activity":"Started","CustomerName":"CustomerName3","DeviceID":"StationRoboter","OrderID":"CustomerOrderID3","DateTime":"2018-11-27T12:56:47Z+0100","Color":[{"Name":"red","Amount":1},{"Name":"green","Amount":1},{"Name":"blue","Amount":1}],"BrickTotalAmount":3} 他们提交产品零件颜色及其在一个服务过程中计算的数量. 请注意 json-array color 因此,我的创建表的代码是: CREATE EXTERNAL TABLE iotdata( activity
8 2024-03-06
编程技术问答社区
如何在Hive中提取嵌套的JSON对象
我有一个名为" Impact"的列,该列中具有嵌套JSON格式的数据 输入: [{"internalid":"079","impactid":[{"position":"1","typeid":"NOEUD","value":"G1"},{"position":"2","typeid":"ID","value":"001"},{"position":"3","typeid":"CODE_CI","value":"14"}],"typeid":"BTS","cdrs":"X110","belong":"OF","impactclass":"R","count":"0","numberaccessimpacted":"0","impactcalculationrequest":null},{"internalid":"6381075","impactid":[{"position":"1","typeid":"NOEUD","value":"G3"},{"position":"2","
16 2024-03-06
编程技术问答社区
如何在hive中对数组进行排序并返回索引?
在Hive中,我想将一个从最大到最小的阵列分类,然后获取索引数组. 例如,表就是这样: id | value_array 1 | {30, 40, 10, 20} 2 | {10, 30, 40, 20} 我得到这个: id | value_array 1 | {1, 0, 3, 2} 2 | {2, 1, 3, 0} 结果是初始元素的索引.我该如何实现? 解决方案 使用posexplode爆炸数组来获取索引和值,按值排序,收集索引数组: select id, collect_list(pos) as result_array from ( select s.id, a.pos, a.v from your_table s lateral view posexplode(s.value_array) a as pos, v distribute by s.id sort by a.v DESC -
12 2024-03-06
编程技术问答社区
对STRUCT数据类型使用类似操作符
我有一个带有结构数组的表.有没有办法使用类似运算符过滤此列的记录? hive> desc location; location_list array> hive> select * from location; row1 : [{"city":"Hudson","state":"NY"},{"city":"San Jose","state":"CA"},{"city":"Albany","state":"NY"}] row2 : [{"city":"San Jose","state":"CA"},{"city":"San Diego","state":"CA"}] 我试图运行类似的查询,仅以" ny"状态过滤这些记录. hive> select * from location where location_list like '%"NY"%'; FAILED: SemanticExce
14 2024-03-06
编程技术问答社区
如何访问数组中的最后一个元素?
在我的蜂巢表中,session字段是格式的字符串,例如: ip-sessionID-userID或area-sessionID-userID 有3或4个字段由" -"隔开,但是UserId始终是最后一个. 我想选择用户ID,但是如何访问最后一个字段?在Python中,有类似的东西: arr[-1] 但是,在蜂巢中,如何实现这一目标?以下SQL似乎不正确. select split(session,"\-")[-1] as user from my_table; 谢谢! 解决方案 reverse(split(reverse(session), '-')[0]) 尽管这可能比Regex解决方案贵一些;) 其他解决方案 因为蜂巢中不支持数组索引的非恒定表达式. 还有其他一些解决您的问题的方法: 使用regexp_extract,例如: 选择regexp_extract(session,'(\ - [^\ - ]+)',1
18 2024-03-05
编程技术问答社区
如何在hive中创建一个空的结构数组?
i在Hive 1.1.0中具有视图,基于条件,它应该返回一个空数组或struct 的数组 这是我的代码: select case when then array() else array(struct(t1.name, t1.jobslots)) end from table t1; 这里的问题是,空数组array()是类型array.因此,当我尝试将其插入表中时,它会引发错误. 如何将其更改为返回类型array>的空数组,以便Hive's size()函数在此数组上返回0? 解决方案 您可以使用collect_list或colect_set进行此操作,以收集从联接中取出的一系列结构,并且联接条件为false,然后col
14 2024-03-05
编程技术问答社区
在Hive中对多列进行爆炸处理
我正在尝试在Hive中的多列中爆炸记录. 例如,如果我的数据集看起来像这样 - COL_01 COL_02 COL_03 1 A, B X, Y, Z 2 D, E, F V, W 我希望它作为输出 - COL_01 COL_02 COL_03 1 A X 1 B Y 1 NULL Z 2 D V 2 E W 2 F NULL 有没有办法在Hive中进行此操作? 我看到了一些有关单列爆炸的帖子,但没有像在这种情况下的多个列. 解决方案 在子征服中分别爆炸,并使用完整的加入加入它们. with your_data as ( select stack(2, 1, 'A, B', 'X, Y, Z', 2, 'D, E, F', 'V,
12 2024-03-05
编程技术问答社区