我正在使用一个使用大量union all运算符的查询填充拼花地板存储格式的分区配置单元表。查询是使用Tez执行的,默认设置会导致多个并发Tez编写器创建HDFS结构,其中拼花文件位于分区文件夹下的子文件夹中(文件夹名为Tez编写器ID)。例如/应用程序/蜂巢/仓库/划痕。db/test_table/part=p1/8/000000_0
即使在使元数据无效并收集表上的统计数据之后,Impala在查询表时也会返回零行。问题似乎在于Impala没有遍历分区子文件夹来查找拼花文件。
如果我将hive.merge.tezfiles设置为true(默认情况下为false),有效地迫使Tez使用额外的处理步骤将多个文件合并为一个,结果拼花文件直接写入分区文件夹下,刷新后Impala可以在新建或更新分区。
我想知道Impala是否有一个配置选项来指示它查看分区子文件夹,或者可能有一个Impala的补丁来改变它在这方面的行为。
到目前为止,Impala不支持从表位置下的子目录递归读取文件。示例:如果使用位置“/home/data/input/”创建表
如果目录结构如下所示:
/home/data/input/a.txt
/home/data/input/b.txt
/home/data/input/subdir1/x.txt
/home/data/input/subdir2/y.txt
然后Impala可以查询从以下文件只
/home/data/input/a.txt/home/data/input/b.txt
不查询以下文件
/home/data/input/subdir1/x.txt
/home/data/input/subdir2/y.txt
作为替代解决方案,您可以从配置单元读取数据并插入到最终的配置单元表中。
在此表顶部创建一个Impala视图,用于交互式或报告查询。
您可以使用下面的配置设置在Hive中设置此功能。
Hive支持带有选项的子目录扫描
SET mapred。输入迪尔。递归=真
和
设置蜂箱。映射。支持。子目录=true
我们正在寻找一种解决方案,以便创建一个外部配置单元表,根据parquet/avro模式从parquet文件中读取数据。 换句话说,如何从拼花/avro模式生成hive表? 谢谢:)
我在分布式模式下仅在数据极顶部运行Drill 1.15(3个节点,每个节点有32GB内存)。我正在尝试读取HDF中Spark作业生成的拼花文件。 生成的文件正在spark中读取,很好,但在Drill中读取时,除了少数列之外,它似乎对其他列不起作用。 组织。阿帕奇。训练常见的例外。UserRemoteException:数据读取错误:从磁盘读取时发生异常。文件:[文件名]。拼花地板列:行组开始:11
我是大数据生态系统的新手,有点起步。 我读过几篇关于使用spark流媒体阅读Kafka主题的文章,但我想知道是否可以使用spark作业而不是流媒体阅读Kafka主题?如果是的话,你们能帮我指出一些可以让我开始学习的文章或代码片段吗。 问题的第二部分是以拼花格式向hdfs写信。一旦我读了Kafka的书,我想我会有一个rdd。将此rdd转换为数据帧,然后将数据帧写入拼花文件。这是正确的方法吗。 感谢您
我正在从Impala迁移到SparkSQL,使用以下代码读取一个表: 我如何调用上面的SparkSQL,这样它就可以返回这样的东西:
我正在使用Spark 1.6.0。以及用于读取分区拼花数据的DataFrame API。 我想知道将使用多少个分区。 以下是我的一些数据: 2182个文件 Spark似乎使用了2182个分区,因为当我执行计数时,作业被拆分为2182个任务。 这似乎得到了的证实 对吗?在所有情况下? 如果是,数据量是否过高(即我是否应该使用df重新分区来减少数据量)?
我遇到了一个问题,无法在Hive中读取由Spark生成的分区拼花文件。我可以在hive中创建外部表,但是当我尝试选择几行时,hive只返回一个“OK”消息,没有行。 我能够在Spark中正确读取分区的拼花文件,所以我假设它们是正确生成的。当我在hive中创建外部表而不进行分区时,我也能够读取这些文件。 null 我的Spark配置文件有以下参数(/etc/Spark/conf.dist/spark