【问题标题】:Sqoop: java.lang.Double cannot be cast to java.nio.ByteBufferSqoop:java.lang.Double 不能转换为 java.nio.ByteBuffer
【发布时间】:2021-07-15 17:15:32
【问题描述】:

我试图将一个表从 oracle 导入到 hive,但我不断收到此错误。

我正在执行:

sqoop 导入 -Dmapreduce.job.queuename=XXXXXX --connect jdbc:oracle:XXX:@//XXXXXX --username XXXX --password-file=XXXX --query “从 base.test 中选择描述、区域”--mapreduce-job-name jobSqoop-test --target-dir /data/user/hive/warehouse/base.db/test --split-by zona --map-column-java "ZONA=Double,DESCRIPCION=String" --delete-target-dir --as-parquetfile --compression-codec=snappy --null-string '\N' --null-non-string '\N' --num-mappers 1 --hive-import --hive-overwrite --hive-database base --hive-table test --direct

Error: java.lang.ClassCastException: java.lang.Double cannot be cast to java.nio.ByteBuffer
        at org.apache.parquet.avro.AvroWriteSupport.writeValueWithoutConversion(AvroWriteSupport.java:338)
        at org.apache.parquet.avro.AvroWriteSupport.writeValue(AvroWriteSupport.java:271)
        at org.apache.parquet.avro.AvroWriteSupport.writeRecordFields(AvroWriteSupport.java:187)
        at org.apache.parquet.avro.AvroWriteSupport.write(AvroWriteSupport.java:161)
        at org.apache.parquet.hadoop.InternalParquetRecordWriter.write(InternalParquetRecordWriter.java:123)
        at org.apache.parquet.hadoop.ParquetRecordWriter.write(ParquetRecordWriter.java:179)
        at org.apache.parquet.hadoop.ParquetRecordWriter.write(ParquetRecordWriter.java:46)
        at org.apache.hadoop.mapred.MapTask$NewDirectOutputCollector.write(MapTask.java:670)
        at org.apache.hadoop.mapreduce.task.TaskInputOutputContextImpl.write(TaskInputOutputContextImpl.java:89)
        at org.apache.hadoop.mapreduce.lib.map.WrappedMapper$Context.write(WrappedMapper.java:112)
        at org.apache.sqoop.mapreduce.parquet.hadoop.HadoopParquetImportMapper.write(HadoopParquetImportMapper.java:61)
        at org.apache.sqoop.mapreduce.ParquetImportMapper.map(ParquetImportMapper.java:72)
        at org.apache.sqoop.mapreduce.ParquetImportMapper.map(ParquetImportMapper.java:38)
        at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:146)
        at org.apache.sqoop.mapreduce.AutoProgressMapper.run(AutoProgressMapper.java:64)
        at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:799)
        at org.apache.hadoop.mapred.MapTask.run(MapTask.java:347)
        at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:174)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:422)
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1875)
        at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:168)

有什么想法吗?

谢谢

【问题讨论】:

    标签: hadoop sqoop


    【解决方案1】:

    修复使用

    Dsqoop.parquet.logical_types.decimal.enable=false

    【讨论】:

      猜你喜欢
      • 2015-04-15
      • 2013-10-18
      • 2017-01-12
      • 2018-02-10
      • 2023-03-22
      • 2013-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多