我已在配置单元中创建了表。不是外部的,保持表结构与位于hdfs中的文件相同。当我将数据从hdfs加载到hivemetastore中的表时,它成功地加载了,但只加载了空值,而不是实际的数据。我理解读模式的概念,但如何确保文件中的任何数据都能成功地加载到表中。请有人建议如何解决这个问题。谢谢
sy5wg1nm1#
注意空位。有时您需要检查原始数据是否有空空间,如果您定义的数据类型不是string,这将成为问题(转换将失败,返回空值)。例如,当您将列数据类型定义为double,但加载的数据包含空格(例如:“0.5”)时,它将生成空值。如果这是一个问题,您可以用string数据类型中的所有列创建新表,然后修剪并将其转换为其他数据类型。
uelo1irk2#
请检查是否使用正确的语法来创建具有正确数据类型的表。
CREATE TABLE IF NOT EXISTS employee ( eid int, name String,salary String, destination String) COMMENT ‘Employee details’ ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘\t’ LINES TERMINATED BY ‘\n’
您应该检查“fields terminated by”和“lines terminated by”是否正确。文件和表中的列数应匹配。如果您仍然面临这个问题,请提供create table语句和insert语句以及文件中的示例数据。谢谢
2条答案
按热度按时间sy5wg1nm1#
注意空位。有时您需要检查原始数据是否有空空间,如果您定义的数据类型不是string,这将成为问题(转换将失败,返回空值)。例如,当您将列数据类型定义为double,但加载的数据包含空格(例如:“0.5”)时,它将生成空值。如果这是一个问题,您可以用string数据类型中的所有列创建新表,然后修剪并将其转换为其他数据类型。
uelo1irk2#
请检查是否使用正确的语法来创建具有正确数据类型的表。
您应该检查“fields terminated by”和“lines terminated by”是否正确。文件和表中的列数应匹配。
如果您仍然面临这个问题,请提供create table语句和insert语句以及文件中的示例数据。
谢谢