pig连接没有返回结果

bcs8qyzn  于 2021-06-24  发布在  Pig
关注(0)|答案(0)|浏览(213)

这个问题我已经解决了12个多小时了。我有一个pig脚本正在amazon web服务上运行。目前,我只是在互动模式下运行我的脚本。我试图从气象站获取大量气候数据的平均值;但是,此数据没有国家或州信息,因此必须与另一个有国家或州信息的表联接。
状态表:

  1. 719990 99999 LILLOOET CN CA BC WKF +50683 -121933 +02780
  2. 719994 99999 SEDCO 710 CN CA CWQJ +46500 -048500 +00000
  3. 720000 99999 BOGUS AMERICAN US US -99999 -999999 -99999
  4. 720001 99999 PEASON RIDGE/RANGE US US LA K02R +31400 -093283 +01410
  5. 720002 99999 HALLOCK(AWS) US US MN K03Y +48783 -096950 +02500
  6. 720003 99999 DEER PARK(AWS) US US WA K07S +47967 -117433 +06720
  7. 720004 99999 MASON US US MI K09G +42567 -084417 +02800
  8. 720005 99999 GASTONIA US US NC K0A6 +35200 -081150 +02440

气候表:(我意识到它不包含任何满足连接条件的内容,但是完整的数据集包含这些内容。)

  1. STN--- WBAN YEARMODA TEMP DEWP SLP STP VISIB WDSP MXSPD GUST MAX MIN PRCP SNDP FRSHTT
  2. 010010 99999 20090101 23.3 24 15.6 24 1033.2 24 1032.0 24 13.5 6 9.6 24 17.5 999.9 27.9* 16.7 0.00G 999.9 001000
  3. 010010 99999 20090102 27.3 24 20.5 24 1026.1 24 1024.9 24 13.7 5 14.6 24 23.3 999.9 28.9 25.3* 0.00G 999.9 001000
  4. 010010 99999 20090103 25.2 24 18.4 24 1028.3 24 1027.1 24 15.5 6 4.2 24 9.7 999.9 26.2* 23.9* 0.00G 999.9 001000
  5. 010010 99999 20090104 27.7 24 23.2 24 1019.3 24 1018.1 24 6.7 6 8.6 24 13.6 999.9 29.8 24.8 0.00G 999.9 011000
  6. 010010 99999 20090105 19.3 24 13.0 24 1015.5 24 1014.3 24 5.6 6 17.5 24 25.3 999.9 26.2* 10.2* 0.05G 999.9 001000
  7. 010010 99999 20090106 12.9 24 2.9 24 1019.6 24 1018.3 24 8.2 6 15.5 24 25.3 999.9 19.0* 8.8 0.02G 999.9 001000
  8. 010010 99999 20090107 26.2 23 20.7 23 998.6 23 997.4 23 6.6 6 12.1 22 21.4 999.9 31.5 19.2* 0.00G 999.9 011000
  9. 010010 99999 20090108 21.5 24 15.2 24 995.3 24 994.1 24 12.4 5 12.8 24 25.3 999.9 24.6* 19.2* 0.05G 999.9 011000
  10. 010010 99999 20090109 27.5 23 24.5 23 982.5 23 981.3 23 7.9 5 20.2 22 33.0 999.9 34.2 20.1* 0.00G 999.9 011000
  11. 010010 99999 20090110 22.5 23 16.7 23 977.2 23 976.1 23 11.9 6 15.5 23 35.0 999.9 28.9* 17.2 0.09G 999.9 000000

我使用textloader加载气候数据,应用正则表达式获取字段,并从结果集中过滤掉空值。然后我对州数据也做了同样的处理,但我会对美国这个国家进行过滤。
这些包有以下模式:climate\u remove\u empty:{station:int,wban:int,year:int,month:int,day:int,temp:double}states\u filter\u us:{station:int,wban:int,name:chararray,wmo:chararray,fips:chararray,state:chararray}
我需要对(station,wban)执行一个join操作,这样我就可以得到一个包含station,wban,year,month和temp的结果包。当我对生成的包执行转储时,它说它成功了;但是,转储返回0个结果。这是输出。

  1. HadoopVersion PigVersion UserId StartedAt FinishedAt Features
  2. 1.0.3 0.9.2-amzn hadoop 2013-05-03 00:10:51 2013-05-03 00:12:42 HASH_JOIN,FILTER
  3. Success!
  4. Job Stats (time in seconds):
  5. JobId Maps Reduces MaxMapTime MinMapTIme AvgMapTime MaxReduceTime MinReduceTime AvgReduceTime Alias Feature Outputs
  6. job_201305030005_0001 2 1 36 15 25 33 33 33 CLIMATE,CLIMATE_REMOVE_NULL,RAW_CLIMATE,RAW_STATES,STATES,STATES_FILTER_US,STATE_CLIMATE_JO IN HASH_JOIN hdfs://10.204.30.125:9000/tmp/temp-204730737/tmp1776606203,
  7. Input(s):
  8. Successfully read 30587 records from: "hiddenbucket"
  9. Successfully read 21027 records from: "hiddenbucket"
  10. Output(s):
  11. Successfully stored 0 records in: "hdfs://10.204.30.125:9000/tmp/temp-204730737/tmp1776606203"
  12. Counters:
  13. Total records written : 0
  14. Total bytes written : 0
  15. Spillable Memory Manager spill count : 0
  16. Total bags proactively spilled: 0
  17. Total records proactively spilled: 0

我不知道为什么我的这个包含0个结果。我的数据提取似乎是正确的。工作很成功。这使我相信连接条件永远不会满足。我知道输入文件有一些应该满足连接条件的数据,但它完全不返回任何内容。
唯一可疑的是一个警告,说明:访问\u不存在\u字段时遇到警告26001次。
我不太清楚接下来该怎么办。因为作业没有失败,我在调试中看不到任何错误或任何东西。
我不确定这些是否意味着什么,但这里有其他突出的东西:当我试图说明state\u climate\u join时,我得到一个nullpointerexception-错误2997:遇到ioexception。异常:null
当我尝试演示状态时,得到java.lang.indexoutofboundsexception:index:1,size:1
这是我的完整代码:

  1. --Piggy Bank Functions
  2. register file:/home/hadoop/lib/pig/piggybank.jar
  3. DEFINE EXTRACT org.apache.pig.piggybank.evaluation.string.EXTRACT();
  4. --Load Climate Data
  5. RAW_CLIMATE = LOAD 'hiddenbucket' USING TextLoader as (line:chararray);
  6. RAW_STATES= LOAD 'hiddenbucket' USING TextLoader as (line:chararray);
  7. CLIMATE=
  8. FOREACH
  9. RAW_CLIMATE
  10. GENERATE
  11. FLATTEN ((tuple(int,int,int,int,int,double))
  12. EXTRACT(line,'^(\\d{6})\\s+(\\d{5})\\s+(\\d{4})(\\d{2})(\\d{2})\\s+(\\d{1,3}\\.\\d{1})')
  13. )
  14. AS (
  15. station: int,
  16. wban: int,
  17. year: int,
  18. month: int,
  19. day: int,
  20. temp: double
  21. )
  22. ;
  23. STATES=
  24. FOREACH
  25. RAW_STATES
  26. GENERATE
  27. FLATTEN ((tuple(int,int,chararray,chararray,chararray,chararray))
  28. EXTRACT(line,'^(\\d{6})\\s+(\\d{5})\\s+(\\S+)\\s+(\\w{2})\\s+(\\w{2})\\s+(\\w{2})')
  29. )
  30. AS (
  31. station: int,
  32. wban: int,
  33. name: chararray,
  34. wmo: chararray,
  35. fips: chararray,
  36. state: chararray
  37. )
  38. ;
  39. CLIMATE_REMOVE_NULL = FILTER CLIMATE BY station IS NOT NULL;
  40. STATES_FILTER_US = FILTER STATES BY (fips == 'US');
  41. STATE_CLIMATE_JOIN = JOIN CLIMATE_REMOVE_NULL BY (station), STATES_FILTER_US BY (station);

提前谢谢。我在这里不知所措。
--编辑——我终于成功了!我用于分析state\u数据的正则表达式无效。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题