anu*_*anu 7 hadoop hive hdfs sqoop
使用Sqoop将数据从oracle导入到hive,它的工作正常但它在hive中只创建了2个dataTypes String和Double.我想使用timeStamp作为某些列的数据类型.我该怎么做.
bin/sqoop import --table TEST_TABLE --connect jdbc:oracle:thin:@HOST:PORT:orcl --username USER1 -password password -hive-import --hive-home /user/lib/Hive/
Run Code Online (Sandbox Code Playgroud)
除了上述答案之外,我们还可能需要观察错误何时到来,例如
在我的情况下,我有两种类型的数据列导致错误:json和二进制
对于json列,在执行Java类时,在导入过程的最开始时出现错误:
/04/19 09:37:58 ERROR orm.ClassWriter: Cannot resolve SQL type
Run Code Online (Sandbox Code Playgroud)
对于二进制列,导入到hive表时抛出错误(导入数据并将其放入HDFS文件后)
16/04/19 09:51:22 ERROR tool.ImportTool: Encountered IOException running import job: java.io.IOException: Hive does not support the SQL type for column featured_binary
Run Code Online (Sandbox Code Playgroud)
为了摆脱这两个错误,我不得不提供以下选项
--map-column-java column1_json=String,column2_json=String,featured_binary=String --map-column-hive column1_json=STRING,column2_json=STRING,featured_binary=STRING
Run Code Online (Sandbox Code Playgroud)
总之,我们可能必须提供
--map-column-java
Run Code Online (Sandbox Code Playgroud)
要么
--map-column-hive
Run Code Online (Sandbox Code Playgroud)
取决于失败.
您可以使用该参数--map-column-hive覆盖默认映射.此参数需要以逗号分隔的键值对列表,这些键值对由=分隔,以指定哪个列应与Hive中的哪个类型匹配.
sqoop import \
...
--hive-import \
--map-column-hive id=STRING,price=DECIMAL
Run Code Online (Sandbox Code Playgroud)
小智 5
sqoop-2103/sqoop 1.4.5 添加了一项新功能,可让您使用 map-column-hive 参数调出小数精度。例子:
--map-column-hive 'TESTDOLLAR_AMT=DECIMAL(20%2C2)'
Run Code Online (Sandbox Code Playgroud)
此语法将字段定义为DECIMAL(20,2). 将%2C被用作逗号和参数需要在单引号如果从bash外壳提交。
我尝试不加修改地使用 Decimal,我得到了Decimal(10,0)一个默认值。
| 归档时间: |
|
| 查看次数: |
17057 次 |
| 最近记录: |