복붙노트

[HADOOP] hadoop에서 Peg에 Regex 사용하기

HADOOP

hadoop에서 Peg에 Regex 사용하기

CSV 파일에 사용자가 포함되어 있습니다 (tweetid, tweets, userid).

396124436476092416,"Think about the life you livin but don't think so hard it hurts Life is truly a gift, but at the same it is a curse",Obey_Jony09
396124436740317184,"“@BleacherReport: Halloween has given us this amazing Derrick Rose photo (via @amandakaschube, @ScottStrazzante) http://t.co/tM0wEugZR1” yes",Colten_stamkos
396124436845178880,"When's 12.4k gonna roll around",Matty_T_03

이제 트윗 ID로 정렬 된 '좋아하는'단어가 포함 된 모든 트윗을 반환하는 돼지 쿼리를 작성해야합니다.

이를 위해 다음 코드가 있습니다. A = '/ user / pig / tweets'를 (줄)으로로드하십시오. (tweetid : long, msg : chararray, userid (*, *) ') : B = FOREACH A FLATTEN (REGEX_EXTRACT_ALL (줄,'(. *) [, : chararray); C = msg에 의한 B 필터는 '. * favorite. *'와 일치합니다; D = tweetid에 의한 C 순서;

출력을 원하는 방식으로 분할 할 때 정규 표현식은 어떻게 작동합니까?

REGEX_EXTRACT 대신 REGEX_EXTRACT를 사용하여 시도해 보았습니다. 훨씬 간단하다는 것을 알았지 만 트윗을 추출하는 것 외에는 작동하지 않습니다.

B = FOREACH A FLATTEN (REGEX_EXTRACT (라인, '[, ": -] (. *) [", : -], 1)) AS (msg : chararray);

위의 별칭은 트윗을 가져옵니다. 그러나 tweet_id를 얻기 위해 REGEX_EXTRACT를 사용하면 원하는 O / P를 얻을 수 없습니다. B = FOREACH A GENERATE FLATTEN (REGEX_EXTRACT (줄, '(. *) [, ": -] ', 1)) AS (tweetid : long);

(396124554353197056,"Just saw @samantha0wen and @DakotaFears at the drake concert #waddup")
(396124554172432384,"@Yutika_Diwadkar I'm just so bright 😁")

(396124554609033216,"@TB23GMODE i don't know, i'm just saying, why you in GA though? that's where you from?")

(396124554805776385,"@MichaelThe_Lion me too 😒")

(396124552540852226,"Happy Halloween from us 2 @maddow & @Rev_AlSharpton :) http://t.co/uC35lDFQYn")
grunt> 

도와주세요.

해결법

  1. ==============================

    1.주석을 달 수는 없지만 이것을보고 테스트 해 보면 정규 표현식의 인용 부호가 CSV의 인용 부호와 다른 것 같습니다.

    주석을 달 수는 없지만 이것을보고 테스트 해 보면 정규 표현식의 인용 부호가 CSV의 인용 부호와 다른 것 같습니다.

    "에서 csv

    "정규식 코드에서.

    트위터를 얻으려면 다음을 시도하십시오.

    B = FOREACH A GENERATE FLATTEN(REGEX_EXTRACT(line,'.*(,")',1))  AS (tweetid:long);
    
  2. from https://stackoverflow.com/questions/32089571/using-regex-in-pig-in-hadoop by cc-by-sa and MIT license