/// import

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>

<script type="text/javascript">//<![CDATA[

/// logging
try { console.log('init console... done'); } catch(e) { console = { log: function() {} } }


/// body에 붙는 onload와 같이 페이지 시작시에 호출된다.( dom 개체가 모두 loading된후 호출 )
$(document).ready(function()
{
        /// input.moption <- "<input" selector에서 class name이 "moption"이 click event가 발생하면 set_manual_status 함수를 호출한다.
        $("input.moption").bind('click', set_manual_status);
        $("a.link.word").bind('click', dha_result);
});

/// e <- 위에서 click event라고 명시했기 때문에 e는 click  event가 넘어온다.
function set_manual_status(e)
{
        /// $(this)는 jQuery object로써 click이 발생한 부분
        /// ( <input type=\"radio\" name=\"manual_status\" value=\"-1\" class=\"moption\">초기화 )이 된다.
        var manual = $(this).attr('value');
        var form = $(this);

        /// logging ( chrome )
        console.log("word : " +  $(this).siblings("input.word"));

        /// closest는  $(this)를 중심으로 상위에 selector가 form이고 class name이 setoption인것을 찾는다.
        /// form.setoption이 찾아진 위치에서 하위에 selector가 input이고 class name이 word를 찾는다.
        $(this).closest("form.setoption").find("input.word");

        /// .css는 찾아진 해당 위치의 background-color를 #f88로 변경한다.
        $(this).closest("tr").find("td.manual_status").css("background-color", "#f88");

        jQuery.ajax({
                /// 호출할 URL
                url: "http://10.30.143.80:3680/php/top_person/update_mysql.php",
                /// 호출할 URL에서 리턴할 데이터의 TYPE
                dataType: 'json',
                /// URL 뒤에 붙일 파라미터들
                data:
                {
                        word: $(this).siblings("input.word").attr("value"),
                        manual: $(this).attr("value"),
                },
                /// ERROR LOG
                error: function(jqXHR)
                {
                        console.log("error jqHXR.responseText="+jqXHR.responseText);
                },

                /// URL에 호출돼서 결과물이 정상적으로 넘어올때 호출되는 함수로 리턴된 값은 data에 들어있다.
                success: function(data, textStatus, jqXHR)
                {
                        var rt = data.status;
                        var value = data.manual_status;
                        console.log("success. return status="+rt);
                        console.log("success. manual_status="+value);
                        form.closest("tr").find("td.manual_status").text(value).css("background-color", "#8f8");
                        return;
                } // success
        }); /* jQuery.ajax() */
}
//]]></script>



---- html code ----

<form name="setoption">
<td class="number" width=80px>" . ($num+1) . "</td>\n";/// default field
<input type="radio" name="manual_status" value="-1" class="moption">-1
<input type="radio" name="manual_status" value="0"  class="moption">0
<input type="radio" name="manual_status" value="1"  class="moption">1
<input type="radio" name="manual_status" value="2"  class="moption">2
<input type="radio" name="manual_status" value="3"  class="moption">3
<input type=hidden name="word" class="word" value="" . $word . "">
<input type=hidden name="page" class="page" value="" . $page . "">
<input type=hidden name="sort" class="sort" value="" . $sort . "">
</td>
</form>


'프로그램밍언어 > HTML,JAVASCRIPT' 카테고리의 다른 글

eclipse  (0) 2014.06.20
Posted by 고요한하늘
,

eclipse


이전에 테스트용으로 하둡 query counting과 query merging 테스트 코드를 만들어 놓은 것은

eclipse에서 svn으로 다운로드 받음


다운로드 받고 나면

최상위에 src 디렉토리가 생기고 해당 디렉토리에 아무 파일도 포함돼 있지 않았다.

이 디렉토리에 파일이 추가될려면 즉 컴파일 대상 파일들이 이 디렉토리에 오게 할려면

build path라는걸 해줘야 한다.

하둡의 경우 lib가 필요한 경우도 있기 때문에 lib도 포함시켜야 한다.



--


jar 파일로 만들어 서버에서 실행했더니

실행이 안된다.

java.lang.UnsupportedClassVersionError이라고 에러가 뜬다.

pc(윈도우)에 설치된 자바 버전과 서버에 설치된 자바 버전이 서로 달라서 발생한 문제


해결 방법 : 

우선 서버와 동일한 버전의 자바컴파일러를 설치한다.

그리고 eclipse에서 프로젝트에서 마우스 오른쪽 버튼을 눌러 properties를 선택한후

java Complier에서 java 버전을 서버와 동일한 버전으로 맞춘다.

그리고 Project Facets에서도 java버전을 맞춘다.


-- 

jar 파일을 만들때 서버에 hadoop 관련 라이브러라기 모두 설치돼 있다면 굳이 러이브러리를 포함시킬 필요는 없고

없더먄 runable jar를 만들어 사용

'프로그램밍언어 > HTML,JAVASCRIPT' 카테고리의 다른 글

jQuery + ajax  (0) 2014.06.20
Posted by 고요한하늘
,

입력데이터가

time, name, id 일때

ID로 GROUPING을 하고

그룹핑된 갑들에 대해 time순으로 정렬하기 위해 아래와 같이 nested foreach를 사용한다.



A = FOREACH fields GENERATE time, name, id

B = GROUP A BY (id);

C = FOREACH B {

  sorted = ORDER A by time;

  GENERATE sorted;

};


STORE C INTO '/user/hadoop/jchern/test';

'프로그램밍언어 > HADOOP' 카테고리의 다른 글

hadoop safemode 해제  (0) 2014.06.20
[PIG] set jog.name default_parallel  (0) 2014.06.20
[PIG] ERROR 1000: Error during parsing. Encountered  (0) 2014.06.20
PIG 관련 URL  (0) 2014.06.20
Posted by 고요한하늘
,

http://stackoverflow.com/questions/4966592/hadoop-safemode-recovery-taking-too-long



하둡 safemode 해제


safemode가 너무 오래 지속될때 아래 명령어로 해제한다.



hadoop dfsadmin -safemode leave


'프로그램밍언어 > HADOOP' 카테고리의 다른 글

pig Nested FOREACH  (0) 2014.06.20
[PIG] set jog.name default_parallel  (0) 2014.06.20
[PIG] ERROR 1000: Error during parsing. Encountered  (0) 2014.06.20
PIG 관련 URL  (0) 2014.06.20
Posted by 고요한하늘
,

실행되는 tast name 설정

set job.name 'jchern - dspklog_count_uuid.pig'


reducer 개수 설정

set default_parallel 20

'프로그램밍언어 > HADOOP' 카테고리의 다른 글

pig Nested FOREACH  (0) 2014.06.20
hadoop safemode 해제  (0) 2014.06.20
[PIG] ERROR 1000: Error during parsing. Encountered  (0) 2014.06.20
PIG 관련 URL  (0) 2014.06.20
Posted by 고요한하늘
,

PIG를 한번 써볼려고 간단히 테스트 코드를 만들었는데

다음과 같은 에러를 만나다.

 [main] ERROR org.apache.pig.tools.grunt.Grunt - org.apache.pig.tools.pigscript.parser.ParseException: Encountered " <PATH> "valid_field=foreach "" at line 7, column 1.

Was expecting one of:

    <EOF>

    "cat" ...

    "fs" ...

    "sh" ...

    "cd" ...

    "cp" ...

    "copyFromLocal" ...

    "copyToLocal" ...

    "dump" ...

    "describe" ...

    "aliases" ...

    "explain" ...

    "help" ...

    "kill" ...

    "ls" ...

    "mv" ...

    "mkdir" ...

    "pwd" ...

    "quit" ...

    "register" ...

    "rm" ...

    "rmf" ...

    "set" ...

    "illustrate" ...

    "run" ...

    "exec" ...

    "scriptDone" ...

    "" ...

    <EOL> ...

    ";" ...


        at org.apache.pig.tools.pigscript.parser.PigScriptParser.generateParseException(PigScriptParser.java:1058)

        at org.apache.pig.tools.pigscript.parser.PigScriptParser.handle_invalid_command(PigScriptParser.java:874)

        at org.apache.pig.tools.pigscript.parser.PigScriptParser.parse(PigScriptParser.java:529)

        at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:168)

        at org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:144)

        at org.apache.pig.tools.grunt.Grunt.exec(Grunt.java:90)

        at org.apache.pig.Main.run(Main.java:500)

        at org.apache.pig.Main.main(Main.java:107)


 

문제는 의외의 곳에 있었고 해결법 역시 간단하다.

연산자(=)에 앞뒤에 공백이 없는것이 문제로 보인다.

 


INVALID NOTATION : 

valid_field=foreach fields generate a, b, c


 

VALID NOTATION : 

valid_field = foreach fields generate a, b, c

'프로그램밍언어 > HADOOP' 카테고리의 다른 글

pig Nested FOREACH  (0) 2014.06.20
hadoop safemode 해제  (0) 2014.06.20
[PIG] set jog.name default_parallel  (0) 2014.06.20
PIG 관련 URL  (0) 2014.06.20
Posted by 고요한하늘
,

http://www.cloudera.com/wp-content/uploads/2010/01/IntroToPig.pdf

http://wiki.apache.org/pig/PigLatin#Data_Items


http://pig.apache.org/docs/r0.7.0/piglatin_ref2.html

http://pig.apache.org/docs/r0.9.2/func.html#replace


http://wiki.apache.org/pig/PigLatin  -add(2013/01/08)


load : 하둡서버의 파일을 LOAD

load 파일경로


필드 구분자 지정 : 

A = LOAD 'student' USING PigStorage('\t') AS (name: chararray, age:int, gpa: float); 


filter : 지정된 조건을 내용을 필터링한다.

숫자 : X = FILTER A BY (f1 == 8);

문자 : X = FILTER A BY (f2 == 'apache');

매치 : X = FILTER A BY (f1 matches '.*apache.*');


foreach : 

변수A에서 $3필드값을 변수 B에 저장

B = FOREACH A GENERATE $3;


store : 하둡서버의 파일을 로컬 파일에 저장

store A11 into /data2/jchern/output.txt


join : 두개의 파일을 키값을 가지고 join

OUT = join IN1 by query, IN2 by query;


order : 

OUT = order IN1 by $0 ASC, $15 DESC;


group : 특정 키값을 가지고 그루핑

OUT = group IN1 by (query, url);

'프로그램밍언어 > HADOOP' 카테고리의 다른 글

pig Nested FOREACH  (0) 2014.06.20
hadoop safemode 해제  (0) 2014.06.20
[PIG] set jog.name default_parallel  (0) 2014.06.20
[PIG] ERROR 1000: Error during parsing. Encountered  (0) 2014.06.20
Posted by 고요한하늘
,

1 my ($key, $val) = split(/\t/);
2 $val =~ s/\{\(//;
3 $val =~ s/\)\}//;
4 my @fields = split(/\),\(/, $val);

위와 같은 코드에서  아래와 같은 에러가 발견되었을 경우

Use of uninitialized value in substitution (s///) at

 

초기화 되지 않은  변수가 사용되었다는 경고 메세지인데

이유는 단순하다

1번 라인에 의해 값이 할당된 val에 아무런 것도 들어가지 않았을 경우

즉 split에 의해 리턴되는 값이 없을때 발생하는 경고 메세지이다.

회피하는 방법은 간단히

2,3,4 번행을

if( $val ) 문으로 감싸면 해결된다.

 

 

1 my ($key, $val) = split(/\t/);

2 if( $val )

3 {
4    $val =~ s/\{\(//;
5    $val =~ s/\)\}//;
6    my @fields = split(/\),\(/, $val);

7 } 

'프로그램밍언어 > PERL' 카테고리의 다른 글

[PERL] Wide character in print at  (0) 2014.06.20
[PERL] Unmatched ) in regex; marked by <-- HERE in  (0) 2014.06.20
PERL 기본함수 q, qq qw  (0) 2014.06.20
PERL MAP 사용법  (0) 2014.06.20
PERL 파일 열기 읽기 닫기 삭제  (0) 2014.06.20
Posted by 고요한하늘
,

my $temp = "테스트";

 

이런식으로 코드 중간에 한글 문자열을 넣었을때 다음과 같은 경고 메세지가 뜬다.

 

Wide character in print at

 $direction  = encode('utf-8',"이전:어절:");

해결 방법 :

use Encode;

...

 my $temp = encode('utf-8',"테스트");

Posted by 고요한하늘
,

Unmatched ) in regex; marked by <-- HERE in 위와 같은 에러를 만났을때


매칭을 원하는 문자열 앞과 뒤에

\Q문자열\\E 

\Q와 \E로 문자열을 감싼 상태에서 매칭을 하면 에러가 발생하지 않는다.


예를 들면


if( $buffer =~ /\Qpattern\E/ )

{

}

'프로그램밍언어 > PERL' 카테고리의 다른 글

PERL Use of uninitialized value in substitution  (0) 2014.06.20
[PERL] Wide character in print at  (0) 2014.06.20
PERL 기본함수 q, qq qw  (0) 2014.06.20
PERL MAP 사용법  (0) 2014.06.20
PERL 파일 열기 읽기 닫기 삭제  (0) 2014.06.20
Posted by 고요한하늘
,