我正在尝试使用nifi将一个表从oracle插入hdfs。oracle中的源表具有 timestamp(6)
调用的数据类型字段 sd_timestamp
. nifi具有以下处理器:
querydatabase:查询oracle数据库。
covertavroschema:这个有输入和输出模式。输入和输出模式都具有 sd_timestamp
数据类型为字符串。
转换器
puthdfs:在配置单元中创建的表的数据类型也为string sd_timestamp
. 当摄入完成后,我做了一个 select *
从目标Hive表,我得到 oracle.sql.timestamp@23aff4
作为值而不是时间戳。
请帮忙。
2条答案
按热度按时间ef1yzkbh1#
我可以通过向nifi/conf目录中的bootstrap.conf文件添加以下java参数来解决这个错误
-doracle.jdbc.j2ee13compliant=真
cbeh67ev2#
下面是我做了什么使它工作的细节。不需要
ConvertAvroSchema
步骤。oracle表
填充一些数据
验证数据
nifi流
流程设计
querydatabasetable配置
convertavrotoorc配置
puthdfs配置
logattribute查看hive.ddl属性值
验证hdfs上的结果
创建配置单元表以使用hive.ddl值查询数据并向其中添加位置
查询配置单元表