Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Spark中的RDD上执行分组,并将每组作为单独的拼花文件写入_Java_Apache Spark_Apache Spark Sql_Parquet - Fatal编程技术网

Java 在Spark中的RDD上执行分组,并将每组作为单独的拼花文件写入

Java 在Spark中的RDD上执行分组,并将每组作为单独的拼花文件写入,java,apache-spark,apache-spark-sql,parquet,Java,Apache Spark,Apache Spark Sql,Parquet,我的内存中有一个RDD。我想使用一些任意函数对RDD进行分组,然后将每个分组作为一个单独的拼花文件写出 例如,如果我的RDD由以下形式的JSON字符串组成: {"type":"finish","resolution":"success","csr_id": 214} {"type":"create","resolution":"failure","csr_id": 321} {"type":"action","resolution":"success","csr_id": 262} 我想按“t

我的内存中有一个RDD。我想使用一些任意函数对RDD进行分组,然后将每个分组作为一个单独的拼花文件写出

例如,如果我的RDD由以下形式的JSON字符串组成:

{"type":"finish","resolution":"success","csr_id": 214}
{"type":"create","resolution":"failure","csr_id": 321}
{"type":"action","resolution":"success","csr_id": 262}
我想按“type”属性对JSON字符串进行分组,并将每组具有相同“type”的字符串写入同一拼花文件

我可以看到DataFrame API支持如下写出拼花地板文件(例如,如果RDD由JSON字符串组成):

但是GroupedData API似乎没有提供将每个组写入单个文件的任何函数


有什么想法吗?

您不能写入
GroupedData
,但可以在写入时对数据进行分区:

dataFrame.write.partitionBy("type").format("parquet").save("/tmp/foo")
每个类型都将以
${column}=${value}
格式写入自己的目录。这些可以单独加载:

sqlContext.read.parquet("/tmp/foo/type=action").show
// +------+----------+
// |csr_id|resolution|
// +------+----------+
// |   262|   success|
// +------+----------+
dataFrame.write.partitionBy("type").format("parquet").save("/tmp/foo")
sqlContext.read.parquet("/tmp/foo/type=action").show
// +------+----------+
// |csr_id|resolution|
// +------+----------+
// |   262|   success|
// +------+----------+