Hadoop 将拼花地板数据从HDFS收集到本地文件系统

Hadoop 将拼花地板数据从HDFS收集到本地文件系统,hadoop,hdfs,parquet,Hadoop,Hdfs,Parquet,给定一个分布在HDFS上的拼花地板数据集(元数据文件+may.Parquetparts),如何正确合并部件并将数据收集到本地文件系统dfs-getmerge…不起作用-它将元数据与实际拼花文件合并。有一种涉及Apache Spark API的方法-它提供了一种解决方案,但可能存在没有第三方工具的更有效方法 spark> val parquetData = sqlContext.parquetFile("pathToMultipartParquetHDFS") spark>

给定一个分布在HDFS上的拼花地板数据集(元数据文件+may
.Parquet
parts),如何正确合并部件并将数据收集到本地文件系统
dfs-getmerge…
不起作用-它将元数据与实际拼花文件合并。

有一种涉及Apache Spark API的方法-它提供了一种解决方案,但可能存在没有第三方工具的更有效方法

spark> val parquetData = sqlContext.parquetFile("pathToMultipartParquetHDFS")       
spark> parquet.repartition(1).saveAsParquetFile("pathToSinglePartParquetHDFS")

bash> ../bin/hadoop dfs -get pathToSinglePartParquetHDFS localPath
由于Spark 1.4,最好使用
DataFrame::coalesce(1)
而不是
DataFrame::repartition(1)

您可以使用pig

A = LOAD '/path/to parquet/files' USING parquet.pig.ParquetLoader as (x,y,z) ;
STORE A INTO 'xyz path' USING PigStorage('|');
您可以在其上创建Impala表,然后使用

impala-shell -e "query" -o <output>
impala外壳-e“查询”-o
同样,您也可以使用Mapreduce

您可以使用拼花工具
java-jar parquet-tools.jar merge source/target/

谢谢。这是合法的,但我一直在寻找没有第三方工具的东西,比如Pig,Spark,。。。