JDBCを使用して実用的にテーブルを作成しようとしています。ただし、ハイブシェルから作成したテーブルは実際には表示されません。さらに悪いことに、異なるディレクトリからハイブシェルにアクセスすると、データベースの結果が異なります。設定する必要のある設定はありますか?
前もって感謝します。
Hive CLI を初めて起動すると、現在のディレクトリに metastore derby db が作成されるため、毎回同じディレクトリから hive を実行するようにしてください。この derby DB には、Hive テーブルのメタデータが含まれています。ディレクトリを変更すると、Hive テーブルのメタデータが整理されなくなります。また、Derby DB は複数のセッションを処理できません。Hive への同時アクセスを可能にするには、Metastore を管理するのに付属の弱い小さな derbyDB ではなく、実際のデータベースを使用する必要があります。このために mysql をダウンロードし、jdbc 接続のハイブ プロパティを mysql タイプ 4 純粋な Java ドライバーに変更できます。
Hive ユーザーリストまたは IRC チャネルにメールを送信してみてください。
おそらく、中央の Hive メタストアをセットアップする必要があります (デフォルトでは Derby ですが、mySQL/Oracle/Postgres にすることもできます)。メタストアは、Hive と HDFS の間の「接着剤」です。データ ファイルが HDFS のどこに存在するか、含まれるデータの種類、属するテーブルなどを Hive に通知します。
詳細については、http://wiki.apache.org/hadoop/HiveDerbyServerModeを参照してください。
ええ、それはメタストアが適切に設定されていないためです。Metastoreは、Hiveテーブルに関連付けられたメタデータ(たとえば、テーブル名、テーブルの場所、列名、列タイプ、バケット化/並べ替え情報、パーティション化情報、SerDe情報など)を格納します。
デフォルトのメタストアは組み込みのDerbyデータベースであり、常に1つのクライアントのみが使用できます。これは明らかに、ほとんどの実用的な目的には十分ではありません。ほとんどのユーザーと同様に、別のメタストアを使用するようにHiveインストールを構成する必要があります。MySQLは人気のある選択肢のようです。ClouderaのWebサイトからのこのリンクを使用して、MySQLメタストアを正常に構成しました。
Hadoop ログを調べます。私の場合、これは Hadoop システムが適切にセットアップされていないときに発生しました。namenode は、他のマシンなどのデータノードに接続できませんでした。