0

以下のようにテーブルを作成しました。

CREATE TABLE apachelog (
   host STRING, identity STRING, user STRING, time STRING, request STRING, status STRING,
   size STRING, referer STRING, agent STRING)
   ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
   WITH SERDEPROPERTIES ( "input.regex" = "([^ ]*) ([^ ]*) ([^ ]*) (-
   |\\[[^\\]]*\\]) ([^ \"]*|\"[^\"]*\") (-|[0-9]*) (-|[0-9]*)(?: ([^
   \"]*|\"[^\"]*\") ([^ \"]*|\"[^\"]*\"))?", "output.format.string" =
   "%1$s %2$s %3$s %4$s %5$s %6$s %7$s %8$s %9$s" )
    STORED AS TEXTFILE
   LOCATION 's3://dinendra80/H4P3';

テーブルがそこにあり、正しい行数を持っていることがわかります。

hive> show tables; 
OK 
apachelog 
Time taken: 14.376 seconds

倉庫の場所を見つけました。

hadoop@domU-12-31-39-02-5D-B7:~$ cat hive/conf/hive-default.xml | grep warehouse 
<name>hive.metastore.warehouse.dir</name> 
<value>/mnt/hive_081/warehouse</value> 
<description>location of default database for the warehouse</description>

次に、これを行うと、エラーメッセージが表示されます。

hadoop fs -lsr /mnt/hive_081

lsr: Cannot access /mnt/hive_081: No such file or directory.

Same thing when I look for /mnt/hive_081/warehouse

私が間違っていることは何ですか?最初からすべてのセットアップを 3 回実行しましたが、それでも同じエラーが発生します。

4

1 に答える 1

0

テーブルの作成中に、hive-defaultでキーワードLOCATIONを使用して定義されたものではなく、 「 s3 」ファイルシステム上にあるテーブルデータの場所を明示的に指定しているためです。[... LOCATION's3:// dinendra80 / H4P3' ..]

このキーワードは、confファイルで指定されたテーブルのデフォルトのHDFSストレージの場所を上書きします。

LOCATION's3:// dinendra80 / H4P3'を削除すると、ハイブはテーブルを' / mnt / hive_081 / Warehouse'に保存し、Hadoopcliからプレイできるようになります。

于 2013-03-07T14:11:47.097 に答える