Hive 配置单元表返回空值的原因

Hive 配置单元表返回空值的原因,hive,Hive,我将其编码为创建一个外部表: CREATE EXTERNAL TABLE IF NOT EXISTS carss ( > maker STRING, > model STRING, > mileage FLOAT, > manufacture_year INT, > engine_displacement FLOAT, > engine_power STRING, > body_type STRING, > color_slug STRING,

我将其编码为创建一个外部表:

CREATE EXTERNAL TABLE IF NOT EXISTS carss (
> maker STRING,
> model STRING,
> mileage FLOAT,
> manufacture_year INT, 
> engine_displacement FLOAT,
> engine_power STRING,
> body_type STRING,
> color_slug STRING,
> stk_year FLOAT,
> transmission STRING,
> door_count INT,
> seat_count INT,
> fuel_type STRING, 
> date_created DATE, 
> date_last_seen DATE,
> price_eur FLOAT)
> ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
> LOCATION '/BigData/Project2/'
> TBLPROPERTIES ("skip.header.line.count"="1", 'creator'='Janina', 'created_on'='2020-11-05', 'description'='dataset for classified Ads of cars in Germany and Czech Republic');
当我运行查询时,从carss LIMIT 1中选择*;它返回空值和奇怪的字符

hive> SELECT * FROM carss LIMIT 1;
嗯 ��T�;��9fu7z�C�WHqd��Y�P�C��/�^�B�4.���*G����Ç�ǿN������Y�z~>����Ǘ�?�面向对象��ӿ��������R�������������ݷ����|������N����R����������o����������2}�����x=�ʗ����/�||;������9������߯�����z~:���~��\���/��㏟�vZ)5�5.��_我�4.���
�erS�>�O��D��我�O����տ�?D���?�o��D��1.�_v�K�����?�H����׿.��������|��

您在
/BigData/Project2/
中的文件是否用utf-8编码?如果没有,则在创建外部表时可能需要指定基础文件的编码:

  create external table carss 
     ...
  row format
      serde 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
      with serdeproperties("serialization.encoding"='WINDOWS-1252') 
  location
      ...

这可能会有帮助。

您的文件是否在
/BigData/Project2/
中以utf-8编码?如果没有,则在创建外部表时可能需要指定基础文件的编码:

  create external table carss 
     ...
  row format
      serde 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
      with serdeproperties("serialization.encoding"='WINDOWS-1252') 
  location
      ...

这可能会有帮助。

您是否检查了location/BigData/Project2中hdfs中的数据?您可以运行文件的hdfs dfs-tail path,以查看记录是否也具有相同的字符。是否检查了location/BigData/Project2中hdfs中的数据?您可以运行文件的hdfs dfs-tail path,以查看记录是否也具有相同的字符。