apache-spark - 使用 Spark 将 CSV 转换为 ORC

标签 apache-spark apache-spark-sql orc

我看过 this blog post由 Hortonworks 通过数据源支持 Spark 1.2 中的 ORC。

它涵盖了 1.2 版,它解决了从对象创建 ORC 文件的问题,而不是从 csv 到 ORC 的转换。 我也看到了ways ,按预期在 Hive 中进行这些转换。

有人可以提供一个简单的示例,说明如何从 Spark 1.6+ 加载纯 csv 文件,将其保存为 ORC,然后将其作为数据框加载到 Spark 中。

最佳答案

我将省略 CSV 阅读部分,因为这个问题之前已经回答了很多时间,而且网上有很多教程可以用于此目的,再次编写它会有点矫枉过正。 Check here if you want !

ORC 支持:

关于 ORC,它们受 HiveContext 支持。

HiveContext 是 Spark SQL 执行引擎的一个实例,它与存储在 Hive 中的数据集成在一起。 SQLContext 提供了 Spark SQL 支持的一个子集,它不依赖于 Hive,但 ORC、Window 函数和其他功能依赖于 HiveContext,它从类路径上的 hive-site.xml 读取配置。

您可以定义一个 HiveContext 如下:

import org.apache.spark.sql.hive.orc._
import org.apache.spark.sql._
val hiveContext = new org.apache.spark.sql.hive.HiveContext(sc)

如果您正在使用 spark-shell,您可以直接将 sqlContext 用于此目的而无需创建 hiveContext,因为默认情况下,sqlContext 被创建为 HiveContext。

在下面的 SQL 语句末尾指定 as orc 可确保 Hive 表以 ORC 格式存储。例如:

val df : DataFrame = ???
df.registerTempTable("orc_table")
val results = hiveContext.sql("create table orc_table (date STRING, price FLOAT, user INT) stored as orc")

保存为ORC文件

让我们将 DataFrame 持久化到我们之前创建的 Hive ORC 表中。

results.write.format("orc").save("data_orc")

要将结果存储在配置单元目录而不是用户目录中,请使用此路径代替 /apps/hive/warehouse/data_orc(来自 hive-default.xml 的配置单元仓库路径)

关于apache-spark - 使用 Spark 将 CSV 转换为 ORC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36436020/

相关文章:

java - 运行约 1 小时后,Spark Streaming 作业被终止

apache-spark - 如何实际应用保存的 RF 模型并在 Spark2 中进行预测?

scala - 在 yarn 簇上使用带有管道的 addFile

azure - Spark 驱动程序在 900 秒内启动失败

apache-spark - spark SQL(PySpark)如何实现自增

python - Spark中groupBy的使用

hadoop - 使用 hive 的合并语句将增量数据合并到外部表中

java - Apache orc writer 清除内存

hive - 将数据从 Hive 表复制到 Bigquery 的推荐方法是什么

scala - 如何使用 scala 在 Spark 中使用数据集?