バックグラウンド
主にホストと仮想マシンのホスト名マッピングの一貫性を確保するために、SparkがハイブとHBaseを接続するプロセスをしばらく前に記録します
ステップ
1.まず、Windowsホストファイル、CentOSホストファイル、CentOSホスト名ファイルで接続するIPに対応するホスト名が一致していることを確認します。
たとえば、接続したいIPが192.168.57.141の場合、Windowsの下のC:\ Windows \ System32 \ drivers \ etc \ hostsファイルの対応するコンテンツは次のようになります。
192.168.57.141 scentos
仮想マシンの/ etc / hosts内の対応するコンテンツは次のとおりです(以下のlocalhost部分も欠落していないことに注意してください。そうでない場合、Windowsはまだ接続できません)
192.168.57.141 scentos
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
仮想マシンの/ etc / hostnameの対応するコンテンツは次のとおりです。
scentos
仮想マシン内の2つのファイルの内容が変更されると、再起動が有効になります。次のコマンドを使用して、ホスト名を一時的に変更することもできます。
[root@scentos spark-2.1.0]# hostname scentos
2. hive-site.xmlをsparkディレクトリのconfディレクトリにコピーし、tezエンジンをオフにします
3. mysqlのハイブのSDSテーブルとDBSテーブルを確認します。hdfsが以前にlocalhostを使用してデータを保存したことがある場合は、localhostを実際のIPに変更します。
mysql> update SDS set LOCATION=REPLACE (LOCATION,'hdfs://localhost:8020/user/hive/warehouse','hdfs://192.168.57.141:8020/user/hive/warehouse');
mysql> update DBS set DB_LOCATION_URI=REPLACE (DB_LOCATION_URI,'hdfs://localhost:8020/user/hive/warehouse','hdfs://192.168.57.141:8020/user/hive/warehouse');
4. hive-site.xml、core-site.xml、hdfs.xmlをアイデアのリソースディレクトリにコピーします。hive-site.xmlをコピーした後、tezエンジンを閉じる必要があります。
5.アイデアプロジェクトのpomファイルに依存関係を導入します
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.11</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-hive_2.11</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-hbase-handler</artifactId>
<version>2.3.5</version>
</dependency>
6. sparkクラスター、hiveメタストア、およびhbaseクラスターを開始した後、プロジェクトに次のコードを記述します。ここで、zookeeperIp、zookeeperPort、およびhbaseMasterURLは、独自のZooKeeperアドレス、ポート、およびHBaseアドレスに置き換えられます。
SparkConf conf = new SparkConf()
.setMaster("local[*]")
.setAppName("ActionConsumer")
.set("spark.serializer", KryoSerializer.class.getCanonicalName())
.registerKryoClasses(new Class[]{ConsumerRecord.class})
.set("spark.kryoserializer.buffer.max", "512m")
.set("hbase.zookeeper.quorum", zookeeperIp)
.set("hbase.zookeeper.property.clientPort", zookeeperPort)
.set("hbase.master", hbaseMasterURL);
SparkSession session = SparkSession
.builder()
.config(conf)
.enableHiveSupport()
.getOrCreate();
Dataset<Row> rawData = session.sql("select * from profile");
rawData.show();
session.sql()のパラメーターを独自のSQLステートメントに置き換えてから、コンパイルして実行します