Tesla 发表于 2019-1-7 09:52:53

spark-shell 如何在运行时选择parquet压缩方式

RT
用的spark2.4 默认parquet压缩为snappy,我想在shell启动后动态调整压缩方式
请问大佬们 如何解决。。

s060403072 发表于 2019-1-7 13:09:54

shell执行后,在执行新的任务后应该可以的。
也可以修改配置,修改后生效,在启动新的任务,也是可以的。如果任务正在执行,然后修改压缩方式,这个任务应该不会立即修改的。否则文件就损坏了。


Tesla 发表于 2019-1-7 16:54:30

s060403072 发表于 2019-1-7 13:09
shell执行后,在执行新的任务后应该可以的。
也可以修改配置,修改后生效,在启动新的任务,也是可以的。 ...

我知道可以,我的问题是怎么修改。。。

yaojiank 发表于 2019-1-7 18:17:37

Tesla 发表于 2019-1-7 16:54
我知道可以,我的问题是怎么修改。。。
这个问题比较复杂。

首先配置项可以在spark submit的时候,提交修改参数。如下形式-conf
./bin/spark-submit \
--class <main-class> \
--master <master-url> \
--deploy-mode <deploy-mode> \
--conf <key>=<value> \
... # other options
<application-jar> \


修改配置项:
spark.io.compression.codec=snappy
但是这个配置项是用于压缩内部数据的codec,例如RDD分区、广播变量和shuffle输出。

如果楼主想让输入的数据,输出的时候,使用这种格式,需要代码里面是支持的,也就是必须通过代码实现,而不是修改配置项。
代码实现如下:
/tmp/dj/11为json数据
将数据压缩存储成parquet
val logs = spark.read.json("/tmp/dj/11")
logs.coalesce(2).write.parquet("/tmp/dj/parquet2")

读取parquet文件
val logs1 = spark.read.parquet("/tmp/dj/parquet2/*")


页: [1]
查看完整版本: spark-shell 如何在运行时选择parquet压缩方式