对于一组数据帧
val df1 = sc.parallelize(1 to 4).map(i => (i,i*10)).toDF("id","x")
val df2 = sc.parallelize(1 to 4).map(i => (i,i*100)).toDF("id","y")
val df3 = sc.parallelize(1 to 4).map(i => (i,i*1000)).toDF("id","z")
Run Code Online (Sandbox Code Playgroud)
把他们所有人联合起来
df1.unionAll(df2).unionAll(df3)
Run Code Online (Sandbox Code Playgroud)
是否有更优雅和可扩展的方式为任意数量的数据帧执行此操作,例如
Seq(df1, df2, df3)
Run Code Online (Sandbox Code Playgroud) 该应用程序包括
val stats = sqlContext.sql("select id, n from myTable")
stats.write.parquet("myTable.parquet")
Run Code Online (Sandbox Code Playgroud)
这将创建myTable.parquet除了空_SUCCESS文件之外没有任何内容的目录,即使是
stats.show // illustration only here, original size motivates parquet use
+-----+----+
| id | n |
+-----+----+
| a | 1 |
| b | 2 |
+-----+----+
stats.printSchema
root
|-- id: string (nullable = true)
|-- n: long (nullable = true)
Run Code Online (Sandbox Code Playgroud)
如何write.parquet编写数据帧的实际内容?有什么不见了 ?
注意这也会发生在saveAsTextFile.
让
user | fruit
------------
1 | apple
1 | apple
1 | apple
2 | apple
2 | apple
1 | pear
Run Code Online (Sandbox Code Playgroud)
试图结合count并group by得到
user | apples | pears
---------------------
1 | 3 | 1
2 | 2 | 0
Run Code Online (Sandbox Code Playgroud)
任何有关如何进行的提示都表示赞赏.
如何分割一个较大的csv文件(〜100GB)并在每个部分保留标题?
例如
h1 h2
a aa
b bb
Run Code Online (Sandbox Code Playgroud)
进入
h1 h2
a aa
Run Code Online (Sandbox Code Playgroud)
和
h1 h2
b bb
Run Code Online (Sandbox Code Playgroud)