Sqoop导入为OrC文件

时间:2015-04-30 21:55:47

标签: hdfs rdbms sqoop

sqoop中是否有任何选项可以从RDMS导入数据并将其作为ORC文件格式存储在HDFS中?

尝试替代方案:以文本格式导入并使用临时表将输入读取为文本文件,并将hdfs写入hive中的orc

3 个答案:

答案 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. 以任何可用格式(比如文字)导入数据。
  2. 使用Spark SQL读取数据并将其另存为orc文件。
  3. 实施例: 第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