义齿

3009 ワード

背景
前回のsparkがhiveとHBAseを接続する過程を記録し、主にホストと仮想マシンのホスト名マッピングが一致していることを保証しなければならない.
ステップ
1、まずwindowsのhostsファイル、CentOSのhostsファイル、CentOSのhostnameファイルにおける接続すべきipに対応するホスト名が一致することを保証する
例えば私が接続するipは192.168です.57.141、それでは私のwindowsの下のC:WindowsSystem 32driversetchostsファイルの中で相応の内容は
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のhiveの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はideaのresourceディレクトリにコピーされ、hive-site.xmlレプリケーション後tezエンジンを閉じる
5、ideaプロジェクトのpomファイルに依存を導入する

    org.apache.spark
    spark-sql_2.11
    2.1.0


    org.apache.spark
    spark-hive_2.11
    2.1.0


    org.apache.hive
    hive-hbase-handler
    2.3.5

6、sparkクラスタ、hiveのmetastoreとhbaseクラスタを起動した後、プロジェクトに以下のコードを書き、zookeeperIp、zookeeperPortとhbaseMaster URLを自分の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 rawData = session.sql("select * from profile");
        rawData.show();

セッションをsql()のパラメータを自分のsql文に変換し、コンパイルして実行すればよい