问题标签 [hive-query]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Hive:为什么 CTAS 不能读取文件而选择查询可以
我已将文件放在/hadoop/yarn/local/usercache/root/test_abspath
并想使用我的 UDF 读取第一行。当我使用它运行它时,select test('ABCD','ABCD');
我可以读取该文件,但是当我尝试使用它时Create table as test_tb select test(name,'ABCD') from another_table
它失败了。在第二种情况下f1.exist() was true
,但f1.canRead() was false
我尝试通过 chmod 777 更改读写权限,但没有成功。
读取文件的Java代码如下:
如果select test('ABCD','ACBD')
它成功读取 test_file 的第一行,Create table as test_tb select test(name,'ABCD') from another_table
则返回can't read
字符串。
编辑:如果这是关于添加 serde.jar 那么请重定向我以正确下载 jar。HDP 沙盒版本 2.6.5
hive - 数据摄取问题 hive:java.lang.OutOfMemoryError:无法创建新的本机线程
我是一个 hive 新手,并且在将大型 (1TB) HDFS 文件放入分区的 Hive 托管表时遇到了一系列问题。你能帮我解决这个问题吗?我觉得我在某个地方的配置很糟糕,因为我无法完成减速器工作。
这是我的查询:
我的集群规格是:
- 虚拟机集群
- 共 4 个节点
- 4个数据节点
- 32核
- 140 GB 内存
- Hortonworks HDP 3.0
- Apache Tez 作为默认 Hive 引擎
- 我是集群的唯一用户
我的纱线配置是:
我的 Hive 配置是:
我的 tez 配置:
我尝试了无数种配置,包括:
- 分区日期
- 按日期分区,在 svcpt_id 上使用存储桶进行集群
- 日期分区,svcpt 上的布隆过滤器,按 svcpt_id 排序
- 按日期分区,对 svcpt 进行布隆过滤器,按 svcpt_id 分发和排序
我可以让我的映射顶点运行,但我还没有完成我的第一个减速器顶点。这是我在上述查询中的最新示例:
错误是:
我要么得到这个似乎无法解决的 OOM 错误,要么让数据节点脱机并且无法满足我的复制因子要求。
在这一点上,我已经进行了超过 2 周的故障排除。任何我可以支付费用来解决这个问题的专业顾问的联系方式也将不胜感激。
提前致谢!
mysql - 在 Hive 中使用 case 语句填充前一个值
我在下表中有一个列event
,Hive
如下所示。
现在我想event
使用 case 语句根据列中的值创建新列。
我想signup
在事件列中的位置我希望该Previous_event
列正好是preceding
值。
我已经尝试过如下。
Result
Expected result
我怎样才能实现我想要的?
hive - 在 Hive 表的每个分区中选择第一行
我想从配置单元分区表中的每个分区获取前 N 条记录,而不必反序列化表中的每条记录。我已经看到了许多其他数据库的解决方案,但没有一个可以在 Hive 中运行而不运行每条记录的解决方案。
一个最小的例子:
我想得到结果
无需编写每个子句,也无需反序列化每个分区中的所有数据(这似乎使用RANK OVER
)。
hive - 从 Hive 分区外部表中删除特定列
我想从一个巨大的配置单元分区表中删除其中一列。想知道我该怎么做。这是我尝试过的如下。
DDL:
更改命令:
错误 :
hadoop - Hive View 查询性能:具有不同模式的联合表
我有一个场景,我有两个 Hive 表,第二个基本上是第一个的进化模式(在这个例子中它还有 1 列)。
为了从架构更改中混淆下游用户,我正在使用以下语法创建一个 Hive 视图:
我知道上面返回了所有数据,但是从性能的角度来看,如果对具有有效 business_date 值的视图运行查询,是否会考虑分区键?或者在使用视图时我会失去这个好处吗?
编辑:我应该提到 business_date 实际上是所有分区的唯一值。这意味着,Table_A 中提供的数据不应在 Table_B 中提供。将 Table_A 视为数据的“旧版本”。鉴于此,如果目标是从最终消费者那里抽象出模式更改,这是提供数据的最佳方法吗?
编辑#2:由于大量其他问题,无法将此数据存储在一个表中。
hadoop - 使用多分隔符在 hive 中插入数据
如何使用多重分隔符在配置单元中插入数据,并且在未指定分隔符的列之间插入数据。
以下是我的数据:
我只想在我的配置单元表中插入前 7 列,并且我有一个用于上述数据的 txt 文件。
创建表脚本:
我的数据插入脚本如下:
以下是我的选择语句和错误:
错误 :
sql - 插入覆盖目录的问题
1)
给我没有标题的数据。即使在使用set hive.cli.print.header=true;
我试过做hive -e 'set hive.cli.print.header=true;select * from emp;' > /user/sample/newfolder/sample.xls
- 它没有工作说:没有这样的文件或目录
2)每条记录的数据将转到另一行。如何将其限制为单行?
但我想要它1,ppp,ddd,44,45,www
sql - UNION ALL 不会在 Hive 中生成任何数据
我正在尝试对具有相同 DDL 结构的三个不同表执行 UNION ALL,但最终输出生成零行。我不知道底层执行中发生了什么。有人可以分享您对此的想法吗?我的示例 Hive SQL 如下所示。谢谢你。
如果我尝试在 Presto 上运行以下查询,则表明有数据。
hive - 为什么 Hive Map 键 (i16) 在按键搜索时不能向上转换?
有一个由 thrift 定义的 Hive 表。
我尝试了一些查询来搜索此表。
第 1:74 行 MAP 键类型与索引表达式类型“10”不匹配
以下两个返回正确的结果。
我知道10Y
手段tinyint
和10S
手段smallint
,而且i16
是smallint
。
但是为什么 Hive 会使用smallint
totinyint
而不是int
?
我认为这可能会导致一些信息丢失或数字溢出。