Apache spark 列名中的空格在拼花用于压缩时引发异常

Apache spark 列名中的空格在拼花用于压缩时引发异常,apache-spark,hive,cloudera,parquet,Apache Spark,Hive,Cloudera,Parquet,当我将数据插入到一个列名有空格的拼花地板格式的表中时,出现以下错误 使用Cloudera版本的配置单元客户端 创建存储为拼花地板的表testColumNames(名字字符串); 在TestColumnNames中插入选择“John Smith” 有解决这个问题的方法吗?我们也从Spark 2.3代码中得到了这个错误 org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.IllegalArgumentException: field

当我将数据插入到一个列名有空格的拼花地板格式的表中时,出现以下错误

使用Cloudera版本的配置单元客户端

创建存储为拼花地板的表testColumNames(
名字
字符串); 在TestColumnNames中插入选择“John Smith”

有解决这个问题的方法吗?我们也从Spark 2.3代码中得到了这个错误

org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.IllegalArgumentException: field ended by ';': expected ';' but got 'name' at line 1:   optional binary first name
at org.apache.hadoop.hive.ql.io.HiveFileFormatUtils.getHiveRecordWriter(HiveFileFormatUtils.java:248)
at org.apache.hadoop.hive.ql.exec.FileSinkOperator.createBucketForFileIdx(FileSinkOperator.java:583)
at org.apache.hadoop.hive.ql.exec.FileSinkOperator.createBucketFiles(FileSinkOperator.java:527)
at org.apache.hadoop.hive.ql.exec.FileSinkOperator.processOp(FileSinkOperator.java:636)
at org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:815)
at org.apache.hadoop.hive.ql.exec.SelectOperator.processOp(SelectOperator.java:84)
at org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:815)
at org.apache.hadoop.hive.ql.exec.TableScanOperator.processOp(TableScanOperator.java:98)
at org.apache.hadoop.hive.ql.exec.MapOperator$MapOpCtx.forward(MapOperator.java:157)
at org.apache.hadoop.hive.ql.exec.MapOperator.process(MapOperator.java:497)
at org.apache.hadoop.hive.ql.exec.mr.ExecMapper.map(ExecMapper.java:170)
at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:54)
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:459)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:343)
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:164)
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:1924)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)

Caused by: java.lang.IllegalArgumentException: field ended by ';': expected ';' but got 'name' at line 1:   optional binary first name
at parquet.schema.MessageTypeParser.check(MessageTypeParser.java:212)
at parquet.schema.MessageTypeParser.addPrimitiveType(MessageTypeParser.java:185)
at parquet.schema.MessageTypeParser.addType(MessageTypeParser.java:111)
at parquet.schema.MessageTypeParser.addGroupTypeFields(MessageTypeParser.java:99)
at parquet.schema.MessageTypeParser.parse(MessageTypeParser.java:92)
at parquet.schema.MessageTypeParser.parseMessageType(MessageTypeParser.java:82)
at org.apache.hadoop.hive.ql.io.parquet.write.DataWritableWriteSupport.getSchema(DataWritableWriteSupport.java:43)
at org.apache.hadoop.hive.ql.io.parquet.write.DataWritableWriteSupport.init(DataWritableWriteSupport.java:48)
at parquet.hadoop.ParquetOutputFormat.getRecordWriter(ParquetOutputFormat.java:310)
at parquet.hadoop.ParquetOutputFormat.getRecordWriter(ParquetOutputFormat.java:287)
at org.apache.hadoop.hive.ql.io.parquet.write.ParquetRecordWriterWrapper.<init>(ParquetRecordWriterWrapper.java:69)
at org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat.getParquerRecordWriterWrapper(MapredParquetOutputFormat.java:134)
at org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat.getHiveRecordWriter(MapredParquetOutputFormat.java:123)
at org.apache.hadoop.hive.ql.io.HiveFileFormatUtils.getRecordWriter(HiveFileFormatUtils.java:260)
at org.apache.hadoop.hive.ql.io.HiveFileFormatUtils.getHiveRecordWriter(HiveFileFormatUtils.java:245)
... 18 more

org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.IllegalArgumentException: field ended by ';': expected ';' but got 'name' at line 1:   optional binary first name
at org.apache.hadoop.hive.ql.io.HiveFileFormatUtils.getHiveRecordWriter(HiveFileFormatUtils.java:248)
at org.apache.hadoop.hive.ql.exec.FileSinkOperator.createBucketForFileIdx(FileSinkOperator.java:583)
at org.apache.hadoop.hive.ql.exec.FileSinkOperator.createBucketFiles(FileSinkOperator.java:527)
at org.apache.hadoop.hive.ql.exec.FileSinkOperator.closeOp(FileSinkOperator.java:974)
at org.apache.hadoop.hive.ql.exec.Operator.close(Operator.java:598)
at org.apache.hadoop.hive.ql.exec.Operator.close(Operator.java:610)
at org.apache.hadoop.hive.ql.exec.Operator.close(Operator.java:610)
at org.apache.hadoop.hive.ql.exec.Operator.close(Operator.java:610)
at org.apache.hadoop.hive.ql.exec.mr.ExecMapper.close(ExecMapper.java:199)
at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:61)
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:459)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:343)
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:164)
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:1924)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)
Caused by: java.lang.IllegalArgumentException: field ended by ';': expected ';' but got 'name' at line 1:   optional binary first name
at parquet.schema.MessageTypeParser.check(MessageTypeParser.java:212)
at parquet.schema.MessageTypeParser.addPrimitiveType(MessageTypeParser.java:185)
at parquet.schema.MessageTypeParser.addType(MessageTypeParser.java:111)
at parquet.schema.MessageTypeParser.addGroupTypeFields(MessageTypeParser.java:99)
at parquet.schema.MessageTypeParser.parse(MessageTypeParser.java:92)
at parquet.schema.MessageTypeParser.parseMessageType(MessageTypeParser.java:82)
at org.apache.hadoop.hive.ql.io.parquet.write.DataWritableWriteSupport.getSchema(DataWritableWriteSupport.java:43)
at org.apache.hadoop.hive.ql.io.parquet.write.DataWritableWriteSupport.init(DataWritableWriteSupport.java:48)
at parquet.hadoop.ParquetOutputFormat.getRecordWriter(ParquetOutputFormat.java:310)
at parquet.hadoop.ParquetOutputFormat.getRecordWriter(ParquetOutputFormat.java:287)
at org.apache.hadoop.hive.ql.io.parquet.write.ParquetRecordWriterWrapper.<init>(ParquetRecordWriterWrapper.java:69)
at org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat.getParquerRecordWriterWrapper(MapredParquetOutputFormat.java:134)
at org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat.getHiveRecordWriter(MapredParquetOutputFormat.java:123)
at org.apache.hadoop.hive.ql.io.HiveFileFormatUtils.getRecordWriter(HiveFileFormatUtils.java:260)
at org.apache.hadoop.hive.ql.io.HiveFileFormatUtils.getHiveRecordWriter(HiveFileFormatUtils.java:245)
... 16 more
org.apache.hadoop.hive.ql.metadata.HiveException:java.lang.IllegalArgumentException:字段以“;”结尾:期望“;”但是在第1行得到了“name”:可选的二进制名字
位于org.apache.hadoop.hive.ql.io.HiveFileFormatUtils.getHiveRecordWriter(HiveFileFormatUtils.java:248)
位于org.apache.hadoop.hive.ql.exec.FileSinkOperator.createBucketForFileIdx(FileSinkOperator.java:583)
位于org.apache.hadoop.hive.ql.exec.FileSinkOperator.createBucketFiles(FileSinkOperator.java:527)
位于org.apache.hadoop.hive.ql.exec.FileSinkOperator.processOp(FileSinkOperator.java:636)
位于org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:815)
位于org.apache.hadoop.hive.ql.exec.SelectOperator.processOp(SelectOperator.java:84)
位于org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:815)
位于org.apache.hadoop.hive.ql.exec.TableScanOperator.processOp(TableScanOperator.java:98)
在org.apache.hadoop.hive.ql.exec.MapOperator$MapOpCtx.forward上(MapOperator.java:157)
位于org.apache.hadoop.hive.ql.exec.MapOperator.process(MapOperator.java:497)
位于org.apache.hadoop.hive.ql.exec.mr.ExecMapper.map(ExecMapper.java:170)
位于org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:54)
位于org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:459)
位于org.apache.hadoop.mapred.MapTask.run(MapTask.java:343)
位于org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:164)
位于java.security.AccessController.doPrivileged(本机方法)
位于javax.security.auth.Subject.doAs(Subject.java:422)
位于org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1924)
位于org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)
原因:java.lang.IllegalArgumentException:字段以“;”结尾:期望“;”但是在第1行得到了“name”:可选的二进制名字
在parquet.schema.MessageTypeParser.check(MessageTypeParser.java:212)中
位于parquet.schema.MessageTypeParser.addPrimitiveType(MessageTypeParser.java:185)
位于parquet.schema.MessageTypeParser.addType(MessageTypeParser.java:111)
位于parquet.schema.MessageTypeParser.addGroupTypeFields(MessageTypeParser.java:99)
位于parquet.schema.MessageTypeParser.parse(MessageTypeParser.java:92)
位于parquet.schema.MessageTypeParser.parseMessageType(MessageTypeParser.java:82)
位于org.apache.hadoop.hive.ql.io.parquet.write.DataWritableWriteSupport.getSchema(DataWritableWriteSupport.java:43)
位于org.apache.hadoop.hive.ql.io.parquet.write.DataWritableWriteSupport.init(DataWritableWriteSupport.java:48)
位于parquet.hadoop.ParquetOutputFormat.getRecordWriter(ParquetOutputFormat.java:310)
位于parquet.hadoop.ParquetOutputFormat.getRecordWriter(ParquetOutputFormat.java:287)
位于org.apache.hadoop.hive.ql.io.parquet.write.parquetrecordwriterRapper.(parquetrecordwriterRapper.java:69)
位于org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat.getParquerRecordWriterRapper(MapredParquetOutputFormat.java:134)
位于org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat.getHiveRecordWriter(MapredParquetOutputFormat.java:123)
位于org.apache.hadoop.hive.ql.io.HiveFileFormatUtils.getRecordWriter(HiveFileFormatUtils.java:260)
位于org.apache.hadoop.hive.ql.io.HiveFileFormatUtils.getHiveRecordWriter(HiveFileFormatUtils.java:245)
... 还有18个
org.apache.hadoop.hive.ql.metadata.HiveException:java.lang.IllegalArgumentException:字段以“;”结尾:期望“;”但是在第1行得到了“name”:可选的二进制名字
位于org.apache.hadoop.hive.ql.io.HiveFileFormatUtils.getHiveRecordWriter(HiveFileFormatUtils.java:248)
位于org.apache.hadoop.hive.ql.exec.FileSinkOperator.createBucketForFileIdx(FileSinkOperator.java:583)
位于org.apache.hadoop.hive.ql.exec.FileSinkOperator.createBucketFiles(FileSinkOperator.java:527)
位于org.apache.hadoop.hive.ql.exec.FileSinkOperator.closeOp(FileSinkOperator.java:974)
位于org.apache.hadoop.hive.ql.exec.Operator.close(Operator.java:598)
位于org.apache.hadoop.hive.ql.exec.Operator.close(Operator.java:610)
位于org.apache.hadoop.hive.ql.exec.Operator.close(Operator.java:610)
位于org.apache.hadoop.hive.ql.exec.Operator.close(Operator.java:610)
位于org.apache.hadoop.hive.ql.exec.mr.ExecMapper.close(ExecMapper.java:199)
位于org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:61)
位于org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:459)
位于org.apache.hadoop.mapred.MapTask.run(MapTask.java:343)
位于org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:164)
位于java.security.AccessController.doPrivileged(本机方法)
位于javax.security.auth.Subject.doAs(Subject.java:422)
位于org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1924)
位于org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)
原因:java.lang.IllegalArgumentException:字段以“;”结尾:期望“;”但是在第1行得到了“name”:可选的二进制名字
在parquet.schema.MessageTypeParser.check(MessageTypeParser.java:212)中
位于parquet.schema.MessageTypeParser.addPrimitiveType(MessageTypeParser.java:185)
位于parquet.schema.MessageTypeParser.addType(MessageTypeParser.java:111)
位于parquet.schema.MessageTypeParser.addGroupTypeFields(MessageTypeParser.java:99)
位于parquet.schema.MessageTypeParser.parse(MessageTypeParser.java:92)
位于parquet.schema.MessageTypeParser.parseMessageType(MessageTypeParser.java:82)
位于org.apache.hadoop.hive.ql.io.parquet.write.DataWritableWriteSupport.getSchema(DataWritableWriteSupport.java:43)
位于org.apache.hadoop.hive.ql.io.parquet.write.DataWritableWriteSupport.init(DataWritableWriteSupport.java:48)
位于parquet.hadoop.ParquetOutputFormat.getRecordWriter(ParquetOutputFormat.java:310)
在拼花地板