sqoop中是否有任何选项可以从RDMS导入数据并将其作为ORC文件格式存储在HDFS中?
尝试替代方案:以文本格式导入并使用临时表将输入读取为文本文件,并将hdfs写入hive中的orc
答案 0 :(得分:8)
至少在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")'
答案 1 :(得分:3)
在当前版本的sqoop中,无法在单个拍摄命令中以ORC格式将数据从RDBS导入HDFS。这是sqoop中已知的问题。 引发此问题的参考链接:https://issues.apache.org/jira/browse/SQOOP-2192
我认为现在唯一可用的选择与你提到的相同。我也遇到了类似的用例,并使用了替代的两步方法。
答案 2 :(得分:0)
目前没有选项可以使用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