hadoop - 如何使用 Sqoop 将列类型 SDO_GEOMETRY 从 Oracle 导入到 HDFS?

标签 hadoop hive hdfs sqoop bigdata

问题

我正在使用 Sqoop 从 Oracle 获取数据并将其放入 HDFS。与其他基本数据类型不同,我知道 SDO_GEOMETRY 用于空间数据。

我的 Sqoop 作业在获取数据类型 SDO_GEOMETRY 时失败。

需要帮助将数据类型为 SDO_GEOMETRY 的列 Shape 从 Oracle 导入到 Hdfs。

我有超过 1000 个具有 SDO_GEOMETRY 数据类型的表,当 sqoop 导入发生时,我如何处理一般数据类型?

我已经尝试了 --map-column-java 和 --map-column-hive ,但我仍然遇到错误。

error :
ERROR tool.ImportTool: Encountered IOException running import job: java.io.IOException: Hive does not support the SQL type for column SHAPE

SQOOP 命令

下面是我的 sqoop 命令:

sqoop import --connect 'jdbc:oracle:thin:XXXXX/xxxxx@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=xxxxxxx)(Port=1521))(CONNECT_DATA=(SID=xxxxx)))' -m 1 --create-hive-table --hive-import --fields-terminated-by '^' --null-string '\\\\N' --null-non-string '\\\\N' --hive-overwrite --hive-table PROD.PLAN1   --target-dir test/PLAN1  --table PROD.PLAN  --map-column-hive SE_XAO_CAD_DATA=BINARY --map-column-java SHAPE=String --map-column-hive SHAPE=STRING --delete-target-dir

最佳答案

Sqoop 在关系数据库和 Hadoop 之间提供的默认类型映射在您的情况下不起作用,这就是 Sqoop 作业失败的原因。您需要将映射覆盖为 sqoop 不支持的几何数据类型。

在您的 sqoop 作业中使用以下参数

syntax:--map-column-java col1=javaDatatype,col2=javaDatatype.....

sqoop import
 .......
 ........
 --map-column-java columnNameforSDO_GEOMETRY=String

因为你的列名是 Shape

--map-column-java Shape=String

关于hadoop - 如何使用 Sqoop 将列类型 SDO_GEOMETRY 从 Oracle 导入到 HDFS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43271163/

相关文章:

linux - Hadoop HDFS 测试运行问题 - org.apache.hadoop.conf.Configuration NoClassDefFoundError

database - 存储和解析文本日志和报告的理想系统

java - Hadoop 2.7.3 WARN util.NativeCodeLoader : Unable to load native-hadoop library for your platform. .. 在适用的情况下使用内置 java 类

regex - HiveQL:从字符串中删除句点

python - 如何将数据帧中的连接值插入 Pyspark 中的另一个数据帧?

java - Hadoop hdfs,java客户端无法连接到hdfs

hadoop - Hive 上的实时 Spark SQL

hadoop - start-all.sh : command not found. 我该如何解决这个问题?

hadoop - 访问元组的字段

java - 在Java中为当前日期添加天数