보물창고/Big Data2017.03.22 23:00






아임클라우드는 빅데이터 기반 기술과 인공지능 기술을 개발하는 빅데이터 및 인공지능 전문 기업입니다.

아임클라우드의 Hadoop 기반 빅데이터 시스템은 국내 최고의 전문가 그룹으로 구성되며 고객 여러분의 빅데이터 고민을 해결해 드립니다. 인공지능의 영역은 무궁무진합니다. 강력한 DeepLearning 기술을 통해 가장 필요한 일을 함께 하는 파트너가 되어드립니다.





Imcloud Apache Cloudera CDH kudu 

관련 자료 정리 (hadoop echo)




Kudu는 Hadoop과 Hbase(phoenix)사이의 틈새를 공략한 솔루션 입니다.
 - 빅데이터의 분산 저장과 처리를 하면서 CRUD를 할 수 있는 환경에 대한 요구가 많았습니다. 기존에는 Hbase(phoenix)와 Impala가 일부 이런 요구들을 매꿔 왔으나 기능적으로 여전히 부족한 면이 있어 Kudu같은 솔루션이 나오게 되었습니다.
 - Kudu는 한마디로 말하면 Nosql DB의 엔진으로 이야기 할 수 있습니다.

데이터 저장 & 이용
 - Kudu는 Raft라는 기술을 이용하여 디스크에 직접 데이터를 읽고 쓰는 서버를  구동시키며 윗 레이어에  Impala를 얹어 사용하는 방법이 현 시점에서 가장 일반적인 사용방법이 입니다. java와 C++ API를 이용하여 Kudu데이터를 직접 이용할 수 있는 방법도 제공합니다.

성능
 - 아래에 링크된 논문의 내용을 보면 대략 Impala + parquet 의 성능과 비슷합니다. 성능이 비슷하지만 Kudu를 무시하지 못할 이점은 CRUD를 할 수 있다는 것이죠.

key 설정
 - Kudu에 안내되어 있는 내용을 보면 Hbase의 Split 설정과 MongoDB의 Shard 키와 비슷한 Key를 설정하게 되어있습니다
 - 키의 역할은 데이터를 구분하는데 사용되며 이 역시 Hbase와 MongoDB처럼 데이터를 구분하여 저장하는 기준이 되기 때문에 이를 설정하는 것에 따른 튜닝이 필요할 것으로 보입니다


현재 현업에서 사용하고 있고 적용하려고 준비하는 곳들이 있습니다. 성능적인 면은 기대를 하고 있으며 분산처리를 하면서 CRUD를 할 수 있는 Hadoop 에코가 출시한것에 대해 기대가 높은것으로 보입니다.






설치
Cloudera dependency install






Kudu 개념적인 설명


기타 설명


Kudu에대한 자주 묻는 질문(Kudu의 구성과 사용 가능 범위에 대한 내용이 있음)

Frequently Asked Questions

https://kudu.apache.org/faq.html


Kubu 스키마 디자인할대 고려해야할 사항

구글 번역

https://translate.google.co.kr/translate?sl=en&tl=ko&js=y&prev=_t&hl=ko&ie=UTF-8&u=https%3A%2F%2Fkudu.apache.org%2Foverview.html&edit-text=&act=url


논문

Hbase+ Phoenix, Kudu+impala, imapla+Parquet의 성능 비교

Kudu: Storage for Fast Analytics on Fast Data

https://kudu.apache.org/kudu.pdf

구글 번역

https://translate.google.co.kr/translate?sl=en&tl=ko&js=y&prev=_t&hl=ko&ie=UTF-8&u=https%3A%2F%2Fkudu.apache.org%2Foverview.html&edit-text=&act=url


 




데이터 저장 구조


데이터 복제와 안정성을위해 사용된 알고리즘

Raft consensus algorithm

Paxos 의 대안으로 고안된 합의 알고리즘

https://raft.github.io/

위키 Raft  구글 번역

https://translate.google.co.kr/translate?sl=en&tl=ko&js=y&prev=_t&hl=ko&ie=UTF-8&u=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FRaft_%28computer_science%29&edit-text=&act=url



Paxos

합의를 해결하기위한 프로토콜 모음

위키 Paxos 구글 번역

https://translate.google.co.kr/translate?sl=en&tl=ko&js=y&prev=_t&hl=ko&ie=UTF-8&u=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FRaft_%28computer_science%29&edit-text=&act=url






기타


Using Apache Kudu with Apache Impala (incubating)

테이블 생성 관련한 내용이 포함된 링크 입니다

https://kudu.apache.org/docs/kudu_impala_integration.html



2016 02 24에 업데이트됨. 과거 버전

kudu에 대한 전체적인 설명이 있는 슬라이드 쉐어

https://www.slideshare.net/AsimJalis/apache-kudu 




Impala 데이터 타입 기준으로 Kudu 데이터 타입 제약 사항


DECIMAL, TIMESTAMP, CHAR, VARCHAR, ARRAY, MAP 및 STRUCT 데이터 유형은 Kudu 테이블과 함께 사용할 수 없습니다.

https://www.cloudera.com/documentation/enterprise/latest/topics/impala_array.html#array


BOOLEAN, FLOAT 및 DOUBLE 데이터 유형은 Kudu 테이블의 기본 키 열에 사용할 수 없습니다.

https://www.cloudera.com/documentation/enterprise/latest/topics/impala_boolean.html#boolean







신고





Posted by 파란물
보물창고/Big Data2015.10.05 23:30






context.getConfiguration(); java.lang.NullPointerException 문제 해결




hadoop MRjob을 작성하는중 나타난 트러블 슈팅 내용입니다

환경은 CDH5.X버전이고 ubuntu14.04입니다







15/08/07 10:53:04 INFO input.FileInputFormat: Total input paths to process : 1
15/08/07 10:53:04 INFO mapreduce.JobSubmitter: number of splits:1
15/08/07 10:53:04 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_local1197195623_0001
15/08/07 10:53:04 INFO mapreduce.Job: The url to track the job: http://localhost:8080/
15/08/07 10:53:04 INFO mapreduce.Job: Running job: job_local1197195623_0001
15/08/07 10:53:04 INFO mapred.LocalJobRunner: OutputCommitter set in config null
15/08/07 10:53:04 INFO output.FileOutputCommitter: File Output Committer Algorithm version is 1
15/08/07 10:53:04 INFO mapred.LocalJobRunner: OutputCommitter is org.apache.hadoop.mapreduce.lib.output.FileOutputCommitter
15/08/07 10:53:04 INFO mapred.LocalJobRunner: Waiting for map tasks
15/08/07 10:53:04 INFO mapred.LocalJobRunner: Starting task: attempt_local1197195623_0001_m_000000_0
15/08/07 10:53:04 INFO output.FileOutputCommitter: File Output Committer Algorithm version is 1
15/08/07 10:53:04 INFO mapred.Task: Using ResourceCalculatorProcessTree : [ ]
15/08/07 10:53:04 INFO mapred.MapTask: Processing split: hdfs://Big4:8020/user/hadoop/k/20150804/s0104
15/08/07 10:53:05 INFO mapreduce.Job: Job job_local1197195623_0001 running in uber mode : false
15/08/07 10:53:05 INFO mapreduce.Job: map 0% reduce 0%
15/08/07 10:53:05 INFO mapred.LocalJobRunner: map task executor complete.
15/08/07 10:53:05 WARN mapred.LocalJobRunner: job_local


1197195623_0001
java.lang.Exception: java.lang.NullPointerException
at org.apache.hadoop.mapred.LocalJobRunner$Job.runTasks(LocalJobRunner.java:462)
at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:522)
Caused by: java.lang.NullPointerException
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1017)
at java.lang.Double.parseDouble(Double.java:540)
at kstar_mr_get_idl_data.K$AMapper.map(K_mr.java:89)
at kstar_mr_get_idl_data.K$AMapper.map(Kr_mr.java:1)
at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:145)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:787)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)
at org.apache.hadoop.mapred.LocalJobRunner$Job$MapTaskRunnable.run(LocalJobRunner.java:243)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
15/08/07 10:53:06 INFO mapreduce.Job: Job job_local1197195623_0001 failed with state FAILED due to: NA
15/08/07 10:53:06 INFO mapreduce.Job: Counters: 0

at ChildProcess.exithandler (child_process.js:751:12)
at ChildProcess.emit (events.js:110:17)
at maybeClose (child_process.js:1015:16)
at Process.ChildProcess._handle.onexit (child_process.js:1087:5)

hadoop@B:~/DEVS/WORK/w/kev$ 




java Map 클래스안에서 아래와 같은 부분에서 에러가 났습니다

89번째라인이 문제였는데

context.getConfiguration()에서 가져온값중에 from, to 값이 없는것이 문제였습니다






구글링을 해보니 아래와 같은 링크가 있어 참고해서 해결 했습니다

http://stackoverflow.com/questions/13214914/configuration-object-is-null-in-hadoop-mapper



위에 내용중 참고한 부분은 아래 내용입니다

And also try this JobConf job = new JobConf(new Configuration());


MapReduce java 코드 main에서 conf를 아래처럼 만들어 쓰고 있었는데요

JobConf conf = new JobConf();

이렇게 써서 특정 시스템에서는 잘 동작으했으나

시스템을 옮기기 안되는 문제가 있어


JobConf conf = new JobConf(new Configuration());

이런식으로 변경했더니 잘 동작을 했습니다


신고





Posted by 파란물
보물창고/Big Data2015.08.23 23:30





flume error 해결 org.apache.hadoop.io.LongWritable"org.apache.hadoop.io.BytesWritable



해결에 참고한 내용



입력되는 값
문자열이 탭으로 구분된 데이터

sfae a;ldfja;sldj alwkejhfalskdhf a;slekjafabcd def de
ab d eef ddefsef
sfae a;ldfja;sldj alwkejhfalskdhf a;slekjafabcd def de
ab d eef ddefsef
sfae a;ldfja;sldj alwkejhfalskdhf a;slekjafabcd def de
ab d eef ddefsef
sfae a;ldfja;sldj alwkejhfalskdhf a;slekjaabcd def de
ab d eef ddefsef
sfae a;ldfja;sldj alwkejhfalskdhf a;slekjafabcd def de
ab d eef ddefsef
sfae a;ldfja;sldj alwkejhfalskdhf a;slekjaf
sfae a;ldfja;sldj alwkejhfalskdhf a;slekjafabcd def de
ab d eef ddefsef
sfae a;ldfja;sldj alwkejhfalskdhf a;slekjafabcd def de
ab d eef ddefsef
sfae a;ldfja;sldj alwkejhfalskdhf a;slekjafabcd def de
ab d eef ddefsef
sfae a;ldfja;sldj alwkejhfalskdhf a;slekjaabcd def de
ab d eef ddefsef
sfae a;ldfja;sldj alwkejhfalskdhf a;slekjafabcd def de





 에러로 출력되는 결과
SEQ!org.apache.hadoop.io.LongWritable"org.apache.hadoop.io.BytesWritable      €藪???pR??      NC+?   abcd def de      NC+?   ab d eef ddefsef   8    NC+?   ,sfae a;ldfja;sldj alwkejhfalskdhf a;slekjaf      NC+?   abcd    def     de   +    NC+?   ab      d       eef     ddefsef   O    NC+?   Csfae    a;ldfja;sldj    alwkejhfalskdhf a;slekjafabcd    def     de   +    NC+?   ab      d       eef     ddefsef   O    NC+?   Csfae    a;ldfja;sldj    alwkejhfalskdhf a;slekjafabcd    def     de   +    NC+?   ab      d       eef     ddefsef   O    NC+?   Csfae    a;ldfja;sldj    alwkejhfalskdhf a;slekjafabcd    def     de








아래 설정에서 파란색 라인을 추가 하는 것으로 해결됨

agent.sources = logfilereadSource
agent.channels = memoryChannel
agent.sinks = loggerSink

# source
# For each one of the sources, the type is defined
agent.sources.logfilereadSource.type = exec
agent.sources.logfilereadSource.command = tail -F /home/hadoop/download/flumeTestfile.log
agent.sources.logfilereadSource.batchSize = 10
agent.sources.logfilereadSource.channels = memoryChannel

# channel
agent.channels.memoryChannel.type = memory
agent.channels.memoryChannel.capacity = 20480


# Sink
#Specify the channel the sink should use
agent.sinks.loggerSink.type = hdfs
agent.sinks.loggerSink.channel = memoryChannel
agent.sinks.loggerSink.hdfs.path = hdfs://localhost:8020/user/admin/flumetest/log
agent.sinks.loggerSink.hdfs.fileType = DataStream
agent.sinks.loggerSink.serializer = com.adaltas.flume.serialization.HeaderAndBodyTextEventSerializer$Builder
agent.sinks.loggerSink.serializer.format = CSV
agent.sinks.loggerSink.serializer.appendNewline = true
agent.sinks.loggerSink.serializer.delimiter = '\t'


위 설정 추가후

ab d eef ddefsef sfae a;ldfja;sldj alwkejhfalskdhf a;slekjafabcd def de ab d eef ddefsef sfae a;ldfja;sldj alwkejhfalskdhf a;slekjafabcd def de ab d eef ddefsef sfae a;ldfja;sldj alwkejhfalskdhf a;slekjaabcd def de ab d eef ddefsef sfae a;ldfja;sldj alwkejhfalskdhf a;slekjafabcd def de ab d eef ddefsef sfae a;ldfja;sldj alwkejhfalskdhf a;slekjaf





신고





Posted by 파란물
보물창고/Big Data2014.11.02 23:30





윈도우 하둡 하이브 외부 테이블 생성 에이브로 스키마 설정, Azure HDInsight Hive Create external table avro file read







HDInsight환경 hive에서 avro파일을 읽을수 있도록하는 create table 쿼리 입니다

테스트하는 동안 발생한 에러들도 포함해서 적습니다

에러로 찾아오시는 분들에게 도움이 되었으면 합니다



Azure HDInsight를 공부하면서 본 링크들을 정리했습니다







위 링크 중 [사이트 2]에 있는 hive코드를 참고했습니다
문서에는 java, hadoop streaming, hive, pig에서 사용할 수 있는 샘플 코드들이 있습니다
문서 앞부분에는 샘플 avro데이터 파일과 avsc파일이 있어 이걸 사용하면 바로 테스트 해 볼 수 있습니다





  • avsc파일을 url로 적는 방법으로 하다 적용이 안되어 create 할때 스키마를 직접 적어주는 방법으로 했습니다
    'avro.schema.literal' // 스키마를 직접 입력하는 것으로 사용함
    'avro.schema.url' //스키마를 경로로 지정하면서 파일을 사용함
  • azure hdinsight에서는 hdfs:///avrotest/schema/twitter.avsc 이방법으로는 파읽을 읽지 못하는거 같습니다





HDInsight에서 잘 동작하는 Create 문입니다


CREATE EXTERNAL TABLE tweets

COMMENT "A table backed by Avro data with the Avro schema stored in HDFS"
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
WITH SERDEPROPERTIES (
'avro.schema.literal' = '{
"name" : "Tweet",
"type" : "record",
"namespace" : "com.miguno.avro",
"fields" : [ {
"name" : "username",
"type" : "string"
}, {
"name" : "tweet",
"type" : "string"
}, {
"name" : "timestamp",
"type" : "long"
} ]
}'
)
STORED AS
INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'

LOCATION '/avrotest/data/';








잘 적용된 결과 확인


hive> describe tweets;
OK
username string from deserializer
tweet string from deserializer
timestamp bigint

hive> select * from tweets;
OK
miguno Rock: Nerf paper, scissors is fine. 1366150681
BlizzardCS Works as intended. Terran is IMBA. 1366154481
DarkTemplar From the shadows I come! 1366154681
VoidRay Prismatic core online! 1366160000
VoidRay Fire at will, commander. 1366160010
DarkTemplar I am the blade of Shakuras! 1366174681
Immortal I return to serve! 1366175681
Immortal En Taro Adun! 1366176283
VoidRay There is no greater void than the one between your ears. 13661763
00
DarkTemplar I strike from the shadows! 1366184681

Time taken: 0.172 seconds, Fetched: 10 row(s)









아래는 테스트 중 나온 에러들 입니다


'avro.schema.url'을 'avro.schema.literal'로 바꾸는 것으로 해결 했습니다

url도 사용가능하러 같은데 어떤 경로를 넣어줘야 하는지는 Azure HDInsight에서 확인해 봐야 합니다



CREATE EXTERNAL TABLE tweets
COMMENT "A table backed by Avro data with the Avro schema stored in HDFS"
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
STORED AS
INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'
LOCATION '/user/YOURUSER/examples/input/'
TBLPROPERTIES (
'avro.schema.url'='hdfs:///user/YOURUSER/examples/schema/twitter.avsc'
);


CREATE EXTERNAL TABLE tweets
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
STORED AS
INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'
LOCATION '/avrotest/data/'
TBLPROPERTIES (
'avro.schema.url'='hdfs:///avrotest/schema/twitter.avsc'
);

설정이 잘 안되서 다른걸로 시도중

describe tweets;

에러 스크랩
hive>
> CREATE EXTERNAL TABLE tweets
> ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
> STORED AS
> INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
> OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'

> LOCATION '/avrotest/data/'
> TBLPROPERTIES (
>
Display all 445 possibilities? (y or n)
>
Display all 445 possibilities? (y or n)
> 'avro.schema.url'='hdfs:///avrotest/schema/twitter.avsc'
> );
OK
Time taken: 0.579 seconds
hive>
>
> describe tweets;
OK
error_error_error_error_error_error_error string from des
erializer
cannot_determine_schema string from deserializer
check string from deserializer
schema string from deserializer
url string from deserializer
and string from deserializer
literal string from deserializer
-- 이런 에러 출력이 된다면 avsc 설정이 제대로 안된 상태 입니다
Time taken: 0.904 seconds, Fetched: 7 row(s)
hive> select * from tweets;
OK
Failed with exception java.io.IOException:org.apache.avro.AvroTypeException: Fou
nd com.miguno.avro.Tweet, expecting org.apache.hadoop.hive.CannotDetermineSchema
Sentinel
Time taken: 1.611 seconds
hive> show tabels;
NoViableAltException(26@[654:1: ddlStatement : ( createDatabaseStatement | switc
hDatabaseStatement | dropDatabaseStatement | createTableStatement | dropTableSta
tement | truncateTableStatement | alterStatement | descStatement | showStatement
| metastoreCheck | createViewStatement | dropViewStatement | createFunctionStat
ement | createMacroStatement | createIndexStatement | dropIndexStatement | dropF
unctionStatement | dropMacroStatement | analyzeStatement | lockStatement | unloc
kStatement | lockDatabase | unlockDatabase | createRoleStatement | dropRoleState
ment | grantPrivileges | revokePrivileges | showGrants | showRoleGrants | showRo
lePrincipals | showRoles | grantRole | revokeRole | setRole | showCurrentRole );
])
at org.antlr.runtime.DFA.noViableAlt(DFA.java:158)
at org.antlr.runtime.DFA.predict(DFA.java:144)
at org.apache.hadoop.hive.ql.parse.HiveParser.ddlStatement(HiveParser.ja
va:2090)
at org.apache.hadoop.hive.ql.parse.HiveParser.execStatement(HiveParser.j
ava:1398)
at org.apache.hadoop.hive.ql.parse.HiveParser.statement(HiveParser.java:
1036)
at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:19
9)
at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:16
6)
at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:409)
at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:323)
at org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:980)
at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1045)
at org.apache.hadoop.hive.ql.Driver.run(Driver.java:916)
at org.apache.hadoop.hive.ql.Driver.run(Driver.java:906)
at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:2
68)
at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:220)
at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:423)
at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:793
)
at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:686)
at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:625)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.hadoop.util.RunJar.main(RunJar.java:212)
FAILED: ParseException line 1:5 cannot recognize input near 'show' 'tabels' '<EO
F>' in ddl statement
hive> show tables;
OK
hivesampletable
tweets
Time taken: 0.11 seconds, Fetched: 2 row(s)
hive> show tables;
OK
hivesampletable
tweets
Time taken: 0.062 seconds, Fetched: 2 row(s)
hive> select * from tweets;
OK
Failed with exception java.io.IOException:org.apache.avro.AvroTypeException: Fou
nd com.miguno.avro.Tweet, expecting org.apache.hadoop.hive.CannotDetermineSchema
Sentinel
Time taken: 0.297 seconds

--

위에것하고 같은글인데 git에서 관리되면서 더 최신으로 보임
https://github.com/miguno/avro-hadoop-starter

CREATE EXTERNAL TABLE tweets
COMMENT "A table backed by Avro data with the Avro schema stored in HDFS"
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
WITH SERDEPROPERTIES (
'avro.schema.url' = 'hdfs:///avrotest/schema/twitter.avsc'
)
STORED AS
INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'
LOCATION '/avrotest/data/';


에러 스크랩
hive>
> CREATE EXTERNAL TABLE tweets
> COMMENT "A table backed by Avro data with the Avro schema stored in HDFS"
> ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
> WITH SERDEPROPERTIES (
> 'avro.schema.url' = 'hdfs:///avrotest/schema/twitter.avsc'
> )
> STORED AS
> INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
> OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'

> LOCATION '/avrotest/data/';
OK
Time taken: 0.431 seconds
hive>
> describe tweets;
OK
error_error_error_error_error_error_error string from des
erializer
cannot_determine_schema string from deserializer
check string from deserializer
schema string from deserializer
url string from deserializer
and string from deserializer
literal string from deserializer
-- 이런 에러 출력이 된다면 avsc 설정이 제대로 안된 상태 입니다
Time taken: 0.875 seconds, Fetched: 7 row(s)
hive>


--


CREATE EXTERNAL TABLE tweets
COMMENT "A table backed by Avro data with the Avro schema stored in HDFS"
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
WITH SERDEPROPERTIES (
'avro.schema.url' = 'hdfs:///avrotest/schema/twitter.avsc'
)
STORED AS
INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'
LOCATION 'hdfs:///avrotest/data/';

에러 스크랩
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:Got exception: java.io.IOException Incomplete HDFS URI, no host: hdfs:/avrotest/data)

--

CREATE EXTERNAL TABLE tweets
COMMENT "A table backed by Avro data with the Avro schema stored in HDFS"
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
WITH SERDEPROPERTIES (
'avro.schema.url' = '{
"type" : "record",
"name" : "Tweet",
"namespace" : "com.miguno.avro",
"fields" : [ {
"name" : "username",
"type" : "string"
}, {
"name" : "tweet",
"type" : "string"
}, {
"name" : "timestamp",
"type" : "long"
} ]
}'
)
STORED AS
INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'
LOCATION '/avrotest/data2/';

에러 스크랩
hive> describe tweets;
OK
error_error_error_error_error_error_error string from deserializer
cannot_determine_schema string from deserializer
check string from deserializer
schema string from deserializer
url string from deserializer
and string from deserializer
literal string from deserializer
-- 이런 에러 출력이 된다면 avsc 설정이 제대로 안된 상태 입니다
Time taken: 0.585 seconds, Fetched: 7 row(s)
hive>

--
"앞에 역슬레시가 있어서 따라해 봤음
https://social.msdn.microsoft.com/Forums/azure/en-US/5e0e93f9-3c02-40dc-afa4-656faacde69b/cannot-read-data-from-hive-external-table-to-a-avro-serilized-files-failed-with-exception?forum=hdinsight

CREATE EXTERNAL TABLE tweets
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
WITH SERDEPROPERTIES (
'avro.schema.url' = '{
\"type\" : \"record\",
\"name\" : \"Tweet\",
\"namespace\" : \"com.miguno.avro\",
\"fields\" : [ {
\"name\" : \"username\",
\"type\" : \"string\"
}, {
\"name\" : \"tweet\",
\"type\" : \"string\"
}, {
\"name\" : \"timestamp\",
\"type\" : \"long\"
} ]
}'
)
STORED AS
INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'
LOCATION '/avrotest/data2/';


에러 스크랩
hive>
>
> CREATE EXTERNAL TABLE tweets
> ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
> WITH SERDEPROPERTIES (
> 'avro.schema.url' = '{
> \"type\" : \"record\",
> \"name\" : \"Tweet\",
> \"namespace\" : \"com.miguno.avro\",
> \"fields\" : [ {
> \"name\" : \"username\",
> \"type\" : \"string\"
> }, {
> \"name\" : \"tweet\",
> \"type\" : \"string\"
> }, {
> \"name\" : \"timestamp\",
> \"type\" : \"long\"
> } ]
> }'
> )
> STORED AS
> INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
> OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'

> LOCATION '/avrotest/data2/';
OK
Time taken: 0.234 seconds
hive>
>
> show tables;
OK
hivesampletable
tweets
Time taken: 0.063 seconds, Fetched: 2 row(s)
hive> describe tweets;
OK
error_error_error_error_error_error_error string from deserializer
cannot_determine_schema string from deserializer
check string from deserializer
schema string from deserializer
url string from deserializer
and string from deserializer
literal string from deserializer
-- 이런 에러 출력이 된다면 avsc 설정이 제대로 안된 상태 입니다
Time taken: 0.516 seconds, Fetched: 7 row(s)
hive>

--

CREATE EXTERNAL TABLE tweets
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
WITH SERDEPROPERTIES (
'avro.schema.url' = '{}'
)
STORED AS
INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'

LOCATION '/avrotest/data2/';


신고





Posted by 파란물
보물창고/Big Data2014.10.28 23:30





윈도우 하둡 스터디 하면서 본 MS 한글 문서 Getting Started Azure HDInsight 한글 문서들 Window hadoop










  • 아래 번호 순서대로 읽으면서 전체적인 개념을 파악할 수 있었습니다
  • 모두 한글 문서 입니다








  1. Azure HDInsight를 사용하여 시작
    1. Getting Start의 문서
    2. Azure에서 HDInsight를 만들고 워드 카운트를 하고 엑셀에서 데이터를 읽어와 편집까지 30분 강좌
    3. http://azure.microsoft.com/ko-kr/documentation/articles/hdinsight-get-started/

  2. HDInsight와 함께 Azure Blob 저장소 사용
    1. HDInsight에서 Blob의 위치와 역할을 파악할 수 있음
    2. http://azure.microsoft.com/ko-kr/documentation/articles/hdinsight-use-blob-storage/


  3. HDInsight에 데이터 업로드
    1. Blob에 데이터를 올리는 방법을 설명 합니다
    2. http://azure.microsoft.com/ko-kr/documentation/articles/hdinsight-upload-data/


  4. HDInsight에서 Sqoop 사용
    1. New-AzureHDInsightSqoopJobDefinition -Command "export --connect $connectionString --table $tableName_log4j --export-dir $exportDir_log4j --input-fields-terminated-by \0x20 -m 1"
    2. 위 문장을 사용해서 sqoop을 실행함
    3. http://azure.microsoft.com/ko-kr/documentation/articles/hdinsight-use-sqoop/


  5. HDInsight 클러스터 프로비전
    1. 최초 생성 방법을 설명
    2. Blob을 사용한다는 내용이 적혀 있음 : 일반적으로 HDInsight 클러스터를 프로비전하고, 해당 작업을 실행한 후에 비용을 줄이기 위해 클러스터를 삭제합니다. (클러스터는 HDInsight 로컬 디스크를 의미하는듯)
    3. http://azure.microsoft.com/ko-kr/documentation/articles/hdinsight-provision-clusters/

  6. 프로그래밍 방식으로 Hadoop 작업 제출
    1.  powersell을 사용하여 작업 제출
    2. mapreduce, hive, sqoop 등
    3. http://azure.microsoft.com/ko-kr/documentation/articles/hdinsight-submit-hadoop-jobs-programmatically/


신고





Posted by 파란물

티스토리 툴바