LoginSignup
1
0

More than 5 years have passed since last update.

Cloudera QuickStart VMs(CDH)でHadoop on Windows - Part-4

Posted at

はじめに

今回はUnstructuredデータを取り扱ってみます。

内容は以下より。
https://www.cloudera.com/developers/get-started-with-hadoop-tutorial/exercise-2.html

Part-1はこちら
Part-2はこちら
Part-3はこちら

1. データ投入

データはSandboxに準備してありますので、以下のコマンドを実行します。
以下は、HDFSにディレクトリを作成し、ローカルファイルをHDFSにコピーし、最後に投入したデータを確認しています。

sudo -u hdfs hadoop fs -mkdir /user/hive/warehouse/original_access_logs
sudo -u hdfs hadoop fs -copyFromLocal /opt/examples/log_files/access.log.2 /user/hive/warehouse/original_access_logs
hadoop fs -ls /user/hive/warehouse/original_access_logs

以下、結果です。

[cloudera@quickstart ~]$ sudo -u hdfs hadoop fs -mkdir /user/hive/warehouse/original_access_logs
[cloudera@quickstart ~]$ sudo -u hdfs hadoop fs -copyFromLocal /opt/examples/log_files/access.log.2 /user/hive/warehouse/original_access_logs
[cloudera@quickstart ~]$ hadoop fs -ls /user/hive/warehouse/original_access_logs
Found 1 items
-rw-r--r--   1 hdfs supergroup   39593868 2018-04-01 06:32 /user/hive/warehouse/original_access_logs/access.log.2

2. Hiveクエリエディタでテーブルの作成

Hueにログインし、Hiveクエリエディタにアクセスします。
image.png

CREATE EXTERNAL TABLE intermediate_access_logs (
    ip STRING,
    date STRING,
    method STRING,
    url STRING,
    http_version STRING,
    code1 STRING,
    code2 STRING,
    dash STRING,
    user_agent STRING)
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
    'input.regex' = '([^ ]*) - - \\[([^\\]]*)\\] "([^\ ]*) ([^\ ]*) ([^\ ]*)" (\\d*) (\\d*) "([^"]*)" "([^"]*)"',
    'output.format.string' = "%1$$s %2$$s %3$$s %4$$s %5$$s %6$$s %7$$s %8$$s %9$$s")
LOCATION '/user/hive/warehouse/original_access_logs';

CREATE EXTERNAL TABLE tokenized_access_logs (
    ip STRING,
    date STRING,
    method STRING,
    url STRING,
    http_version STRING,
    code1 STRING,
    code2 STRING,
    dash STRING,
    user_agent STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
LOCATION '/user/hive/warehouse/tokenized_access_logs';

ADD JAR /usr/lib/hive/lib/hive-contrib.jar;

INSERT OVERWRITE TABLE tokenized_access_logs SELECT * FROM intermediate_access_logs;

チュートリアルのページには以下のように記載がありますがエラーになります。

ADD JAR {{lib_dir}}/hive/lib/hive-contrib.jar;

絶対パスに変更し実行します。

ADD JAR /usr/lib/hive/lib/hive-contrib.jar;

以下のようになります。

image.png

2. Query

チュートリアルでは

invalidate metadata;
select count(),url from tokenized_access_logs
where url like '%\/product\/%'
group by url order by count(
) desc;

のようになっていますが、以下のようなエラーが発生します。

Error while compiling statement: FAILED: SemanticException [Error 10128]: line 3:22 Not yet supported place for UDAF 'count'

以下のように修正してから実行します。

select count(*) as cnt,url from tokenized_access_logs
where url like '%\/product\/%'
group by url order by cnt;

以下のように表示されれば成功です。
image.png

4. 終わりに

Hiveの雰囲気はわかってきましたが、CDHにはいろいろ機能があるので覚えることがたくさんありますね。

Part-1はこちら
Part-2はこちら
Part-3はこちら

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0