Apache spark 如何在Spark SQL中使用snappy压缩将数据写入配置单元表

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").

我有一个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").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
,因此它不应该被压缩。如果它被压缩了,我就看不到内容了。你能找到解决方案吗?