使用 Spark 将 CSV 转换为 ORC
Converting CSV to ORC with Spark
我已经看到 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,HiveContext 支持它们。
HiveContext 是 Spark SQL 执行引擎的一个实例,它与 Hive 中存储的数据集成。 SQLContext 提供了 Spark SQL 支持的一个子集,它不依赖于 Hive 而依赖于 ORC,Window 函数和其他功能依赖于从 hive 读取配置的 HiveContext-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 table 以 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 table 中。
results.write.format("orc").save("data_orc")
要将结果存储在配置单元目录而不是用户目录中,请改用此路径/apps/hive/warehouse/data_orc
(来自配置单元的配置单元仓库路径-default.xml)
我已经看到 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,HiveContext 支持它们。
HiveContext 是 Spark SQL 执行引擎的一个实例,它与 Hive 中存储的数据集成。 SQLContext 提供了 Spark SQL 支持的一个子集,它不依赖于 Hive 而依赖于 ORC,Window 函数和其他功能依赖于从 hive 读取配置的 HiveContext-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 table 以 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 table 中。
results.write.format("orc").save("data_orc")
要将结果存储在配置单元目录而不是用户目录中,请改用此路径/apps/hive/warehouse/data_orc
(来自配置单元的配置单元仓库路径-default.xml)