HIVE-SQL\u服务器:HadoopExecutionException:此行列数不足
我有一个具有以下结构和数据的配置单元表: 表结构:HIVE-SQL\u服务器:HadoopExecutionException:此行列数不足,sql,sql-server,hive,hiveql,Sql,Sql Server,Hive,Hiveql,我有一个具有以下结构和数据的配置单元表: 表结构: CREATE EXTERNAL TABLE IF NOT EXISTS db_crprcdtl.shcar_dtls ID string, CSK string, BRND string, MKTCP string, AMTCMP string, AMTSP string, RLBRND string, ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t
CREATE EXTERNAL TABLE IF NOT EXISTS db_crprcdtl.shcar_dtls
ID string,
CSK string,
BRND string,
MKTCP string,
AMTCMP string,
AMTSP string,
RLBRND string,
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
STORED AS TEXTFILE
LOCATION '/on/hadoop/dir/'
-------------------------------------------------------------------------------
ID | CSK | BRND | MKTCP | AMTCMP
-------------------------------------------------------------------------------
782 flatn,grpl,mrtn hnd,mrc,nsn 34555,56566,66455 38900,59484,71450
1231 jikl,bngr su,mrc,frd 56566,32333,45000 59872,35673,48933
123 unsrvl tyt,frd,vlv 25000,34789,33443 29892,38922,36781
正在尝试将此数据推入SQL Server。但在执行此操作时,会收到以下错误消息:
SQL Error [107090] [S0001]: HdfsBridge::recordReaderFillBuffer - Unexpected error encountered filling record reader buffer: HadoopExecutionException: Not enough columns in this line.
我尝试的是:
有一篇在线文章,作者记录了类似的问题。我试图实现其中一个在Excel中查找,发现两列有回车符
,但这也不方便
任何建议/帮助都将不胜感激。谢谢如果我能够理解您的问题,那么您的,分离数据似乎被分成了不同的列,而不是
SQL-SERVER上的一列,类似于:
------------------------------
ID |CSK |BRND |MKTCP |AMTCMP
------------------------------
782 flatn grpl mrtn hnd mrc nsn 345 56566 66455 38900 59484 71450
1231 jikl bngr su mrc frd 56566 32333 45000 59872 35673 48933
123 unsrvl tyt frd vlv 25000 34789 33443 29892 38922 36781
因此,如果您查看Hive
,只有5列。而在SQL-SERVER上时
相同。我认为这是因为您没有共享该模式。但如果是这种情况,那么您会看到传递的值超过5个。而模式定义只有5列。
因此,错误正在填充
参考此内容,尝试使用字段终止符='\t'
创建文件格式
,
比如:
创建外部文件格式
与(
格式\u TYPE=DELIMITEDTEXT
格式选项(
字段_终止符='\t',
|字符串分隔符=字符串分隔符
|第一行=整数--仅适用于SQL DW
|日期\格式=日期时间\格式
|使用_TYPE_DEFAULT={TRUE | FALSE}
|编码={'UTF8'|'UTF16'})
);
希望这有助于解决您的问题:)
CREATE EXTERNAL FILE FORMAT <name>
WITH (
FORMAT_TYPE = DELIMITEDTEXT,
FORMAT_OPTIONS (
FIELD_TERMINATOR ='\t',
| STRING_DELIMITER = string_delimiter
| First_Row = integer -- ONLY AVAILABLE SQL DW
| DATE_FORMAT = datetime_format
| USE_TYPE_DEFAULT = { TRUE | FALSE }
| Encoding = {'UTF8' | 'UTF16'} )
);