Apache spark 如何在Spark SQL中使用snappy压缩将数据写入配置单元表
我有一个orc配置单元表,它是使用配置单元命令创建的Apache spark 如何在Spark SQL中使用snappy压缩将数据写入配置单元表,apache-spark,Apache Spark,我有一个orc配置单元表,它是使用配置单元命令创建的 create table orc1(line string) stored as orcfile 我想使用sparksql向这个表中写入一些数据,我使用以下代码并希望数据在HDFS上快速压缩 test("test spark orc file format with compression") { import SESSION.implicits._ Seq("Hello Spark", "Hello Hadoop").
create table orc1(line string) stored as orcfile
我想使用sparksql向这个表中写入一些数据,我使用以下代码并希望数据在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压缩
如果我在Hive Beeline/Hive中运行insert overwrite
来写入数据并使用上述set命令
,那么我可以看到表的文件是用snappy压缩的
因此,我想问一下如何使用Spark SQL 2.1中的snappy压缩将数据写入由Hive创建的orc表。您可以在create table命令中将压缩设置为snappy,如下所示
create table orc1(line string) stored as orc tblproperties ("orc.compress"="SNAPPY");
然后,对表的任何插入都将被快速压缩(我还将命令中的
orcfile
更正为orc
) 谢谢,我试过了,但似乎不行。我使用hdfs dfs-cat
对表文件的内容进行cat,我可以在其中看到Hello和Hadoop
,因此它不应该被压缩。如果它被压缩了,我就看不到内容了。你能找到解决方案吗?