Pandas 将数据帧加载到具有int64数据类型的配置单元中

Pandas 将数据帧加载到具有int64数据类型的配置单元中,pandas,hadoop,hive,Pandas,Hadoop,Hive,将包含数据类型为int64的列的pandas数据帧加载到配置单元表时出错 当我排除int64数据类型时,数据将加载到配置单元,但当我包含数据类型时,它将失败。B和C的数据值摘录为1212345678 熊猫 df.dtypes A object B int64 C int64 D float6 df_s.to_parquet("data.parquet") 蜂巢 错误: 错误:java.io.IOException:…:java.lang.ClassCastExcept

将包含数据类型为int64的列的pandas数据帧加载到配置单元表时出错

当我排除int64数据类型时,数据将加载到配置单元,但当我包含数据类型时,它将失败。B和C的数据值摘录为
1212345678

熊猫

df.dtypes
A    object
B    int64
C    int64
D    float6

df_s.to_parquet("data.parquet")
蜂巢

错误:

错误:java.io.IOException:…:java.lang.ClassCastException:org.apache.hadoop.io.LongWritable无法强制转换为org.apache.hadoop.io.IntWritable(state=,code=0)

配置单元表使用字符串而不是int时出错
错误:java.io.IOException:…:java.lang.UnsupportedOperationException:无法检查org.apache.hadoop.io.LongWritable(state=,code=0

经过,Parquet的
Int64
映射到
BIGINT
SQL类型。实际上,这很有效!我最初尝试了INT和string,但失败了,所以我甚至没有考虑BIGINT。同样感谢链接,对于那些感兴趣的人……你需要将
float64
映射到
decimal
经过,Parquet的
Int64
映射到
BIGINT
SQL类型。实际上,这很有效!我最初尝试了INT和string,但失败了,所以我甚至没有考虑BIGINT。感谢链接,也感谢那些感兴趣的人……您需要将
float64
映射到
decimal
CREATE TABLE mytable( 
A string,
B int,
C int,
D string) 
PARTITIONED BY (RECORD_CREATE_DT date) 
STORED AS PARQUET

Load data inpath (<hdfs_path_of_file>) into table mytable partition (record_create_dt='9999-12-31');
select * from mytable;