2016-12-15 86 views
-1

我在創建具有地理空間數據的表(即形狀列)的分區時遇到問題。我有一個有地理空間數據的表格,我想根據狀態名創建一個分區。在配置單元中對地理空間數據進行分區

我創建一個buildingpartiton表如下

SET hive.exec.dynamic.partition=true; 
SET hive.exec.dynamic.partition.mode=non-strict; 

create table buildingpartition (OBJECTID string, 
> RILUNIQUEID string, 
> RILFEATURECODE string, 
> BLDGNO string, 
> BLDGNAME string, 
> BLDGTYPE string, 
> BLDGSUBTYPE string, 
> BLDGCLASS string, 
> BLDGROAD string, 
> BLDGSUBROAD string, 
> SUBLOCALITY string, 
> BLDGSIZE string, 
> TAG string, 
> PINCODE string, 
> NUMBEROFFLATS string, 
> NUMBEROFSHOPS string, 
> BLDG_TYPE string, 
> CABLEOPERATORNAME string, 
> AREA_1 string, 
> LBU2 string, 
> SHAPE binary) 
> Partitioned by (STATENAME string) 
> ROW FORMAT SERDE 'com.esri.hadoop.hive.serde.JsonSerde' 
> STORED AS INPUTFORMAT 'com.esri.json.hadoop.UnenclosedJsonInputFormat' 
> OUTPUTFORMAT'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'; 

然後我試圖將數據從現有的建築表插入到該表。這個建築表由4000萬條記錄組成。

> Insert into table buildingpartition parition (statename) select * from building; 

我收到錯誤的主要原因是

產生的原因:org.apache.hadoop.hive.ql.metadata.HiveException:org.apache.hadoop.hive.ql.metadata。 HiveException:org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.protocol.FSLimitException $ PathComponentTooLongException):statename的最大路徑組件名稱限制= 00 00 00 00 03 05 00 00 00 00 83 54 0b b0 17 22 41 f0 6d 9e 04 7b 61 43 41 c0 84 25 eb ed 17 22 41 a0 82 cd c2 80 61 43 41 01 00 00 00 05 00 00 00 00 00 00 00 00 83 54 0b b0 17 22 41 18 49 58 7a 80 61 43 41 40 a0 a2 83 ed 17 22 41 a0 82 cd c2 80 61 43 41 c0 84 25 eb ed 17 22 41 70 a7 13 4d 7b 61 43 41 40 c9 31 72 b0 17 22 41 f0 6d 9e 04 7b 61 43 41 00 83 54 0b b0 17 22 41 18 49 58 7a 80 61 43 41在/apps/hive/warehouse/proddb.db/buildingpartition/.hive-staging_hive_2016-12-15_10-58-15_294_7141760028369054723-1/超過_task_tmp.-ext-10002:限制= 255長度= 408

任何人都可以幫我解決這個問題嗎?我已附上下面的完整錯誤跟蹤。任何幫助,將不勝感激。由於

錯誤:了java.lang.RuntimeException:org.apache.hadoop.hive.ql.metadata.HiveException:蜂巢運行時錯誤在處理排{ 「OBJECTID」:空, 「riluniqueid」: 「KOL_A_LO0000_0597215」,」 rilfeaturecode 「:」 LO0000" , 「bldgno」: 「空」, 「bldgname」: 「空」, 「bldgtype」: 「1」, 「bldgsubtype」: 「未分類」, 「bldgclass」: 「大廈」, 「bldgroad」 :「PURANO BAZAR BRIDGE」,「bldgsubroad」:「PK VISHWAS ROAD」,「sublocality」:「Milan Garh Colony」,「Statename」:「西孟加拉邦」,「bldgsize」:「G + 0」,「標籤」: 「空」, 「pin碼」: 「700119」, 「numberofflats」: 「0」, 「numberofshops」: 「0」, 「bldg_type」: 「其他」, 「cableoperatorname」: 「空」, 「area_1」:「0.0 「,」lbu2「:」null「,」shape「:012T 」A m {aCA % 「A aCA T 」AIXz [email protected] 「AACA% 「Ap M{aCA @ 1r 」A m {aCA T 「AIXz aCA} at org.apache.hadoop.hive.ql.exec.mr.ExecMapper.map(ExecMapper。 java:172) at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:54) at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:453) at org.apache。 hadoop.mapred.MapTask.run(MapTask.java:343) at org.apache.hadoop.mapred.YarnChild $ 2.run(YarnChild.java:168) 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:1709) at org.apache.hadoop.mapred.YarnChild.main( YarnChild.java:162) 原因:org.apache.hadoop.hive.ql.metadata.HiveException:Hive處理行{「objectid」:null,「riluniqueid」時出現運行時錯誤:「KOL_A_LO0000_0597215」,「rilfeaturecode」:「LO0000」,「bldgno」 :「null」,「bldgname」:「null」,「bldgtype」:「1」,「bldgsubtype」:「未分類」,「bldgclass」:「建築物」,「bldgroad」:「PURANO BAZAR BRIDGE」 :「PK VISHWAS ROAD」,「sublocality」:「Milan Garh Colony」,「Statename」:「西孟加拉邦」,「bldgsize」:「G + 0」,「tag」:「null」,「pincode」:「700119 「 」numberofflats「: 」0「, 」numberofshops「: 」0「, 」bldg_type「: 」其他「, 」cableoperatorname「: 」空「, 」area_1「:」 0。0「,」lbu2「:」null「,」shape「:012T 」A m {aCA % 「A aCA T 」AIXz [email protected] 「A aCA % 」Ap M{aCA @ 1r 「A m {aCA T 」AIXz aCA} at org.apache.hadoop.hive.ql (ExecMapper.java:163) ... 8個以上 引起: org.apache.hadoop.hive.ql.metadata.HiveException:org.apache.hadoop.hive.ql.metadata.HiveException:org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.protocol.FSLimitException $ PathComponentTooLongException):statename的最大路徑組件名稱限制= 00 00 00 00 03 05 00 0 0 00 00 83 54 0b b0 17 22 41 f0 6d 9e 04 7b 61 43 41 c0 84 25 eb ed 17 22 41 a0 82 cd c2 80 61 43 41 01 00 00 00 05 00 00 00 00 00 00 00 00 83 54 0b b0 17 22 41 18 49 58 7a 80 61 43 41 40 a0 a2 83 ed 17 22 41 a0 82 cd c2 80 61 43 41 c0 84 25 eb ed 17 22 41 70 a7 13 4d 7b 61 43 41 40 c9 31 72 b0 17 22 41 f0 6d 9e 04 7b 61 43 41 00 83 54 0b b0 17 22 41 18 49 58 7a 80 61 43 41在目錄/apps/hive/warehouse/proddb.db/buildingpartition/.hive-staging_hive_2016-12-15_10- 5815_294_7141760028369054723-1/_task_tmp.-ext-10002超出:限制= 255長度= 408 at org.apache.hadoop.hdfs.server.namenode.FSDirectory.verifyMaxComponentLength(FSDirectory.java:949) at org。 apache.hadoop.hdfs.server.namenode.FSDirectory.addLastINode(FSDirectory.java:1014) at org.apache.hadoop.hdfs.server.namenode.FSDirMkdirOp.unprotectedMkdir(FSDirMkdirOp.java:237) 在org.apache.hadoop.hdfs.server.namenode.FSDirMkdirOp.createSingleDirectory(FSDirMkdirOp.java:191) 在org.apache.hadoop.hdfs.server.namenode.FSDirMkdirOp.createChildrenDirectories(FSDirMkdirOp.java:166) 在org.apache.hadoop.hdfs.server.namenode.FSDirMkdirOp.createAncestorDirectories(FSDirMkdirOp.java:134) 在org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startFileInternal(FSNamesystem.java:2615) 的組織。 apache.hadoop.hdfs.server.namenode.FSNamesystem.startFileInt(FSNamesystem.java:2493) at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startFile(FSNamesystem.java:2377) at org.apache。 hadoop.hdfs.server.namenode.NameNodeRpcServer.create(NameNodeRpcServer.java:708) at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTr anslatorPB.create(ClientNamenodeProtocolServerSideTranslatorPB.java:405) 在org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos $ ClientNamenodeProtocol $ 2.callBlockingMethod(ClientNamenodeProtocolProtos.java) 在org.apache.hadoop.ipc.ProtobufRpcEngine $服務器$ ProtoBufRpcInvoker .call(ProtobufRpcEngine.java:616) at org.apache.hadoop.ipc.RPC $ Server.call(RPC.java:969) at org.apache.hadoop.ipc.Server $ Handler $ 1.run(Server。 java:2206) at org.apache.hadoop.ipc.Server $ Handler $ 1.run(Server.java:2202) 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:1709) 在org.apache.hadoop.ipc.Server $ Handler.run(Server.java:2200) 在org.apache.hadoop.hive.ql.exec.FileSinkOperator.createBucketFiles(FileSinkOperator.java:577) 的組織。 apache.hadoop.hive.ql.exec.FileSinkOperator.createNewPaths(FileSinkOperator.java:859) at org.apache.hadoop.hive.ql.exec.FileSinkOperator.getDynOutPaths(FileSinkOperator.java:966) at org.apache。 hadoop.hive.ql.exec.FileSinkOperator.process(FileSinkOperator.java:709) at org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:838) at org.apache.hadoop。 hive.ql.exec.SelectOperator.process(SelectOperator.java:88) at org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:838) at org.apache.hadoop.hive。 ql.exec.TableScanOperator.process( TableScanOperator.java:117) at org。apache.hadoop.hive.ql.exec.MapOperator $ MapOpCtx.forward(MapOperator.java:167) at org.apache.hadoop.hive.ql.exec.MapOperator.process(MapOperator.java:552) ... 9更多 引起:org.apache.hadoop.hive.ql.metadata.HiveException:org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.protocol.FSLimitException $ PathComponentTooLongException):最大路徑組件名稱國家名稱限制= 00 00 00 00 03 05 00 00 00 00 83 54 0b b0 17 22 41 f0 6d 9e 04 7b 61 43 41 c0 84 25 eb ed 17 22 41 a0 82 cd c2 80 61 43 41 01 00 00 00 05 00 00 00 00 00 00 00 00 83 54 0b b0 17 22 41 18 49 58 7a 80 61 43 41 40 a0 a2 83 ed 17 22 41 a0 82 cd c2 80 61 43 41 c0 84 25 eb ed 17 22 41 70 a7 13 4d 7b 61 43 41 40 c9 31 72 b0 17 22 41 f0 6d 9e 04 7b 61 43 41 00 83 54 0b b0 17 22 41 18 49 58 7a 80 61 43 41在目錄/apps/hive/warehouse/proddb.db/ buildingpartition/.hive-staging_hive_2016-12-15_10-58-15_294_ 7141760028369054723-1/_task_tmp.-ext-10002超出:limit = 255 length = 408 at org.apache.hadoop.hdfs.server.namenode.FSDirectory.verifyMaxComponentLength(FSDirectory.java:949) at org.apache.hadoop .hdfs.server.namenode.FSDirectory.addLastINode(FSDirectory.java:1014) at org.apache.hadoop.hdfs.server.namenode.FSDirMkdirOp.unprotectedMkdir(FSDirMkdirOp.java:237) at org.apache.hadoop.hdfs .server.namenode.FSDirMkdirOp.createSingleDirectory(FSDirMkdirOp.java:191) at org.apache.hadoop.hdfs.server.namenode.FSDirMkdirOp.createChildrenDirectories(FSDirMkdirOp.java:166) at org.apache.hadoop.hdfs.server .namenode.FSDirMkdirOp.createAncestorDirectories(FSDirMkdirOp.java:134) at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startFileInternal(FSNamesystem.java: 2615) at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startFile(FSNamesystem.java:2377)org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startFileInt(FSNamesystem.java:2493) 在org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.create(NameNodeRpcServer.java:708) 在org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.create(ClientNamenodeProtocolServerSideTranslatorPB.java:405) 的組織。 apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos $ ClientNamenodeProtocol $ 2.callBlockingMethod(ClientNamenodeProtocolProtos.java) 在org.apache.hadoop.ipc.ProtobufRpcEngine $服務器$ ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:616) 在org.apache .hadoop.ipc.RPC $ Server.call(RPC.java:969) at org.apache.hadoop.ipc.Server $ Handler $ 1.run(Server.java:2206) at org.apache.hadoop.ipc.Server $ Handler $ 1.run(Server.java:2202) 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:1709) at org .apache.hadoop.ipc.Server $ Handler.run(Server.java:2200) at org.apache.hadoop.hive.ql.io.HiveFileFormatUtils.getHiveRecordWriter(HiveFileFormatUtils.java:249) at org.apache.hadoop .hive.ql.exec.FileSinkOperator.createBucketForFileIdx(FileSinkOperator.java:622) at org.apache.hadoop.hive.ql.exec.FileSinkOperator.createBucketFiles(FileSinkOperator.java:566) ...更多 引起:org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.protocol.FSLimitException $ PathComponentTooLongException):statename的最大路徑組件名稱限制= 00 00 00 00 03 05 00 00 00 00 83 54 0b b0 17 22 41 f0 6d 9e 04 7b 61 43 41 c0 84 25 eb ed 17 22 41 a0 82 cd c2 80 61 43 41 01 00 00 00 05 00 00 00 00 00 00 00 00 83 54 0b b0 17 22 41 18 49 58 7a 80 61 43 41 40 a0 a2 83 ed 17 22 41 a0 82 cd c2 80 61 43 41 c0 84 25 eb ed 17 22 41 70 a7 13 4d 7b 61 43 41 40 c9 31 72 b0 17 22 41 f0 6d 9e 04 7b 61 43 41 00 83 54 0b b0 17 22 41 18 49 58 7a 80 61 43 41在目錄/apps/hive/warehouse/proddb.db/buildingpartition/.hive-staging_hive_2016-12-15_10- 58-15_294_7141760028369054723-1/_task_tmp.-ext-10002超出:limit = 255 length = 408 at org.apache.hadoop.hdfs.server.namenode.FSDirectory.verifyMaxComponentLength(FSDirectory.java:949) at org.apache .hadoop。hdfs.server.namenode.FSDirectory.addLastINode(FSDirectory.java:1014) at org.apache.hadoop.hdfs.server.namenode.FSDirMkdirOp.unprotectedMkdir(FSDirMkdirOp.java:237) at org.apache.hadoop.hdfs。 server.namenode.FSDirMkdirOp.createSingleDirectory(FSDirMkdirOp.java:191) 在org.apache.hadoop.hdfs.server.namenode.FSDirMkdirOp.createChildrenDirectories(FSDirMkdirOp.java:166) 在org.apache.hadoop.hdfs.server。 namenode.FSDirMkdirOp.createAncestorDirectories(FSDirMkdirOp.java:134) at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startFileInternal(FSNamesystem.java:2615) at org.apache.hadoop.hdfs.server.namenode。 FSNamesystem.startFileInt(FSNamesystem.java:2493) at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startFile(FSNamesystem.java:2377) 在org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.create(NameNodeRpcServer.java:708) 在org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.create(ClientNamenodeProtocolServerSideTranslatorPB.java:405) 的組織。 apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos $ ClientNamenodeProtocol $ 2.callBlockingMethod(ClientNamenodeProtocolProtos.java) 在org.apache.hadoop.ipc.ProtobufRpcEngine $服務器$ ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:616) 在org.apache .hadoop.ipc.RPC $ Server.call(RPC.java:969) at org.apache.hadoop.ipc.Server $ Handler $ 1.run(Server.java:2206) at org.apache.hadoop.ipc。 Server $ Handler $ 1.run(Server.java:2202) 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:1709) at org.apache.hadoop.ipc.Server $ Handler.run(Server.java:2200) at org.apache.hadoop.ipc.Client.call(Client.java:1426) at org.apache.hadoop.ipc.Client.call(Client.java:1363) at org.apache.hadoop.ipc.ProtobufRpcEngine $ Invoker.invoke(ProtobufRpcEngine.java:229) at com.sun.proxy。$ Proxy14.create(Unknown Source) at org.apache.hadoop.hdfs.protocolPB。 ClientNamenodeProtocolTranslatorPB.create(ClientNamenodeProtocolTranslatorPB.java:298) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAc cessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在java.lang.reflect.Method.invoke(Method.java:498) 在org.apache。 hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:256) at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:104) at com.sun.proxy。$ Proxy15.create (Unknown Source) at org.apache.hadoop.hdfs.DFSOutputStream.newStreamForCreate(DFSOutputStream.java:1716) at org.apache.hadoop.hdfs.DFSClient.create(DFSClient.java:1703) at org.apache。 hadoop.hdfs.DFSClient.create(DFSClient.java:1638) at org.apache.hadoop.hdfs.DistributedFileSys (org.apache.hadoop.hdfs.DistributedFileSystem)$ 7.doCall(DistributedFileSystem.java:445) at org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java: 81) at org.apache.hadoop.hdfs.DistributedFileSystem.create(DistributedFileSystem.java:445) at org.apache.hadoop.hdfs.DistributedFileSystem.create(DistributedFileSystem.java:388) at org.apache.hadoop。 fs.FileSystem.create(FileSystem.java:909) at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:802) at org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat.getHiveRecordWriter( HiveIgnoreKeyTextOutputFormat.java:80) at org.apache.hadoop.hive.ql.io.HiveFileFormatUtils。getRecordWriter(HiveFileFormatUtils.java:261) at org.apache.hadoop.hive.ql.io.HiveFileFormatUtils.getHiveRecordWriter(HiveFileFormatUtils.java:246) ... 20個以上 由ApplicationMaster終止的容器。 容器在請求時死亡。退出代碼是143 集裝箱退出,非零退出代碼143 失敗:在執行錯誤,返回碼2從org.apache.hadoop.hive.ql.exec.mr.MapRedTask

回答

0

它說,就在那裏分區目錄名稱超出命名約定限制的錯誤 -

最大路徑組件名稱限制statename = 00 00 00 00 03 05 00 00 00 00 83 54 0b b0 17 22 41 f0 6d 9e 04 7b 61 43 41 c0 84 25 eb ed 17 22 41 a0 82 cd c2 80 61 43 41 01 00 00 00 05 00 00 00 00 00 00 00 00 83 54 0b b0 17 22 41 18 49 58 7a 80 61 43 41 40 a0 a2 83 ed 17 22 41 a0 82 cd c2 80 61 43 41 c0 84 25 eb ed 17 22 41 70 a7 13 4d 7b 61 43 41 40 c9 31 72 b0 17 22 41 f0 6 d 9e 04 7b 61 43 41 00 83 54 0b b0 17 22 41 18 49 58 7a 80 61 43 41 in /apps/hive/warehouse/proddb.db/buildingpartition/.hive-staging_hive_2016-12-15_10-58-超過15_294_7141760028369054723-1/_task_tmp.-EXT-10002:限= 255長度= 408在org.apache.hadoop.hdfs.server.namenode.FSDirectory.verifyMaxComponentLength(FSDirectory.java:949)

你的表在SHAPE列而不是STATENAME列上進行分區,因爲您是使用select *語句插入的。

表格應該被分區的列必須在選擇查詢中被提及爲最後一列。

正確的方式來做到這一點是 -

from building 
insert overwrite table buildingpartition partition(statename) 
select col1,col2..... , statename ;