如何在HDFS中将数据帧中的数据写入单个.parquet文件(单个文件中的数据和元数据)?
df.show() --> 2 rows
+------+--------------+----------------+
| name|favorite_color|favorite_numbers|
+------+--------------+----------------+
|Alyssa| null| [3, 9, 15, 20]| | Ben| red| []|
+------+--------------+----------------+
Run Code Online (Sandbox Code Playgroud)
df.rdd.getNumPartitions() -它有1个分区
>>> df.rdd.getNumPartitions()
Run Code Online (Sandbox Code Playgroud)
1个
df.write.save("/user/hduser/data_check/test.parquet", format="parquet")
Run Code Online (Sandbox Code Playgroud)
如果我使用上面的命令在HDFS中创建镶木地板文件,则它是在该目录"payloads.parquet"中HDFS和该目录中创建目录的多个.parquet文件,元数据文件正在保存。
找到4项
-rw-r--r-- 3 bimodjoul biusers 0 2017-03-15 06:47
/user/hduser/data_check/test.parquet/_SUCCESS
-rw-r--r-- 3 bimodjoul biusers 494 2017-03-15 06:47
/user/hduser/data_check/test.parquet/_common_metadata
-rw-r--r-- 3 bimodjoul biusers 862 2017-03-15 06:47
/user/hduser/data_check/test.parquet/_metadata
-rw-r--r-- 3 bimodjoul biusers 885 2017-03-15 06:47
/user/hduser/data_check/test.parquet/part-r-00000-f83a2ffd-38bb-4c76-9f4c-357e43d9708b.gz.parquet
Run Code Online (Sandbox Code Playgroud)
如何将数据帧中的数据写入单个.parquet文件(单个文件中的数据和元数据)HDFS而不是包含多个文件的文件夹中?
帮助将不胜感激。
biginsights apache-spark apache-spark-sql pyspark pyspark-sql
我正在尝试执行以下代码
package test;
import java.io.IOException;
import java.util.*;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.conf.*;
import org.apache.hadoop.io.*;
import org.apache.hadoop.util.*;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
public class Diction {
public static class WordMapper extends Mapper<Text,Text,Text,Text>
{
private Text word = new Text();
public void map(Text key, Text value, Context context) throws IOException, InterruptedException
{
StringTokenizer itr = new StringTokenizer(value.toString(),",");
while (itr.hasMoreTokens())
{
word.set(itr.nextToken());
context.write(key, word);
}
}
}
public static class AllTranslationsReducer
extends Reducer<Text,Text,Text,Text>
{
private …Run Code Online (Sandbox Code Playgroud)