Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.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
Scala 将数据帧的顺序保存到HDFS 输入数据:_Scala_Dataframe_Apache Spark Sql_Spark Dataframe_Rdd - Fatal编程技术网

Scala 将数据帧的顺序保存到HDFS 输入数据:

Scala 将数据帧的顺序保存到HDFS 输入数据:,scala,dataframe,apache-spark-sql,spark-dataframe,rdd,Scala,Dataframe,Apache Spark Sql,Spark Dataframe,Rdd,代码 使用列键、数据、值将数据读入DF后 datadf.coalesce(1).orderBy(desc("key")).drop(col("key")).write.mode("overwrite").partitionBy("date").text("hdfs://path/") 我试图按列键对列进行排序,并在保存到hdfs之前删除相同的列(每天保存到一个文件中)。 我无法保留输出文件中的顺序。 如果我没有使用coalesce,则顺序会保留,但会生成多个文件 输出: /20180701/p

代码

使用列
键、数据、值将数据读入DF后

datadf.coalesce(1).orderBy(desc("key")).drop(col("key")).write.mode("overwrite").partitionBy("date").text("hdfs://path/")
我试图按列键对列进行排序,并在保存到hdfs之前删除相同的列(每天保存到一个文件中)。 我无法保留输出文件中的顺序。 如果我没有使用coalesce,则顺序会保留,但会生成多个文件

输出:

/20180701/part-xxxxxxx.txt

        a1
        a9
        a6
        a4
        a5
        a3
        a7
        a8
        a2
        a10
/20180702/part-xxxxxxx.txt  

        a18
        a12
        a13
        a19
        a15
        a16
        a17
        a11
        a14
/20180701/part-xxxxxxx.txt

        a1
        a2
        a3
        a4
        a5
        a6
        a7
        a8
        a9
        a10
/20180702/part-xxxxxxx.txt      

        a11
        a12
        a13
        a14
        a15
        a16
        a17
        a18
        a19
预期OP:

/20180701/part-xxxxxxx.txt

        a1
        a9
        a6
        a4
        a5
        a3
        a7
        a8
        a2
        a10
/20180702/part-xxxxxxx.txt  

        a18
        a12
        a13
        a19
        a15
        a16
        a17
        a11
        a14
/20180701/part-xxxxxxx.txt

        a1
        a2
        a3
        a4
        a5
        a6
        a7
        a8
        a9
        a10
/20180702/part-xxxxxxx.txt      

        a11
        a12
        a13
        a14
        a15
        a16
        a17
        a18
        a19

下面的代码应该让您开始(这是使用Spark 2.1):-


“键”字段的类型是什么?键字段的类型是字符串
import org.apache.spark.sql.types.StructType
val schema = new StructType().add($"key".int).add($"date".string).add($"value".string)
val df = spark.read.schema(schema).option("header","true").csv("source.txt")
df.coalesce(1).orderBy("key").drop("key").write.mode("overwrite").partitionBy("date").csv("hdfs://path/")