我有一个使用Hive命令创建的兽人配置单元表
create table orc1(line string) stored as orcfile
我想使用spark sql向该表中写入一些数据,我使用以下代码,并希望在HDFS上对数据进行快速压缩
test("test spark orc file format with compression") {
import SESSION.implicits._
Seq("Hello Spark", "Hello Hadoop").toDF("a").createOrReplaceTempView("tmp")
SESSION.sql("set hive.exec.compress.output=true")
SESSION.sql("set mapred.output.compress=true")
SESSION.sql("set mapred.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec")
SESSION.sql("set io.compression.codecs=org.apache.hadoop.io.compress.SnappyCodec")
SESSION.sql("set mapred.output.compression.type=BLOCK")
SESSION.sql("insert overwrite table orc1 select a from tmp ")
}
已写入数据,但已使用snnapy对其进行NOT
压缩。
如果我在Hive Beeline / Hive中运行insert overwrite
来写入数据并使用上面的set command
,那么我可以看到该表的文件已用snappy压缩。
所以,我想问一下如何在Spark SQL 2.1中通过快速压缩将数据写入由Hive创建的orc表中
答案 0 :(得分:0)
您可以像这样在create table命令中将压缩设置为snappy
create table orc1(line string) stored as orc tblproperties ("orc.compress"="SNAPPY");
然后,对表的所有插入都将进行快速压缩(我也在命令中将orcfile
纠正为orc
)。