【发布时间】:2018-02-13 22:02:18
【问题描述】:
sqoop 中是否有任何选项可以从 RDMS 导入数据并将其以 ORC 文件格式存储在 HDFS 中?
尝试过的替代方案:以文本格式导入并使用临时表将输入作为文本文件读取并作为 hive 中的 orc 写入 hdfs
【问题讨论】:
sqoop 中是否有任何选项可以从 RDMS 导入数据并将其以 ORC 文件格式存储在 HDFS 中?
尝试过的替代方案:以文本格式导入并使用临时表将输入作为文本文件读取并作为 hive 中的 orc 写入 hdfs
【问题讨论】:
至少在 Sqoop 1.4.5 中存在支持 orc 文件格式(等等)的 hcatalog 集成。
例如你有选项
--hcatalog-storage-stanza
可以设置为
stored as orc tblproperties ("orc.compress"="SNAPPY")
例子:
sqoop import
--connect jdbc:postgresql://foobar:5432/my_db
--driver org.postgresql.Driver
--connection-manager org.apache.sqoop.manager.GenericJdbcManager
--username foo
--password-file hdfs:///user/foobar/foo.txt
--table fact
--hcatalog-home /usr/hdp/current/hive-webhcat
--hcatalog-database my_hcat_db
--hcatalog-table fact
--create-hcatalog-table
--hcatalog-storage-stanza 'stored as orc tblproperties ("orc.compress"="SNAPPY")'
【讨论】:
Sqoop 导入仅支持以下格式。
--as-avrodatafile Imports data to Avro Data Files
--as-sequencefile Imports data to SequenceFiles
--as-textfile Imports data as plain text (default)
--as-parquetfile Imports data as parquet file (from sqoop 1.4.6 version)
【讨论】:
在当前可用的 sqoop 版本中,无法通过单个 shoot 命令以 ORC 格式将数据从 RDBS 导入 HDFS。这是 sqoop 中的一个已知问题。 提出此问题的参考链接:https://issues.apache.org/jira/browse/SQOOP-2192
我认为目前唯一可用的选择与您提到的相同。我也遇到了类似的用例,并使用了替代的两步方法。
【讨论】:
目前没有使用 sqoop 将 rdms 表数据直接导入为 ORC 文件的选项。 我们可以通过两步来达到同样的效果。
示例: 第 1 步: 将表格数据导入为文本文件。
sqoop import --connect jdbc:mysql://quickstart:3306/retail_db --username retail_dba --password cloudera \
--table orders \
--target-dir /user/cloudera/text \
--as-textfile
第 2 步: 在命令提示符下使用 spark-shell 获取 scala REPL 命令 shell。
scala> val sqlHiveContext = new org.apache.spark.sql.hive.HiveContext(sc)
sqlHiveContext: org.apache.spark.sql.hive.HiveContext = org.apache.spark.sql.hive.HiveContext@638a9d61
scala> val textDF = sqlHiveContext.read.text("/user/cloudera/text")
textDF: org.apache.spark.sql.DataFrame = [value: string]
scala> textDF.write.orc("/user/cloudera/orc/")
第 3 步:检查输出。
[root@quickstart exercises]# hadoop fs -ls /user/cloudera/orc/
Found 5 items
-rw-r--r-- 1 cloudera cloudera 0 2018-02-13 05:59 /user/cloudera/orc/_SUCCESS
-rw-r--r-- 1 cloudera cloudera 153598 2018-02-13 05:59 /user/cloudera/orc/part-r-00000-24f75a77-4dd9-44b1-9e25-6692740360d5.orc
-rw-r--r-- 1 cloudera cloudera 153466 2018-02-13 05:59 /user/cloudera/orc/part-r-00001-24f75a77-4dd9-44b1-9e25-6692740360d5.orc
-rw-r--r-- 1 cloudera cloudera 153725 2018-02-13 05:59 /user/cloudera/orc/part-r-00002-24f75a77-4dd9-44b1-9e25-6692740360d5.orc
-rw-r--r-- 1 cloudera cloudera 160907 2018-02-13 05:59 /user/cloudera/orc/part-r-00003-24f75a77-4dd9-44b1-9e25-6692740360d5.orc
【讨论】: