Spark-Streaming Connect Hive + HBase

Hintergrund

Zeichnen Sie den Prozess der Spark-Verbindung zwischen Hive und HBase vor einiger Zeit auf, um sicherzustellen, dass die Hostnamenzuordnung des Hosts und der virtuellen Maschine konsistent ist

Schritt

1. Stellen Sie zunächst sicher, dass die Hostnamen, die der IP-Adresse entsprechen, die in der Windows-Hosts-Datei, der CentOS-Hosts-Datei und der CentOS-Hostnamen-Datei verbunden werden soll, konsistent sind.

Die IP-Adresse, zu der ich eine Verbindung herstellen möchte, lautet beispielsweise 192.168.57.141. Der entsprechende Inhalt in der Datei C: \ Windows \ System32 \ drivers \ etc \ hosts unter meinen Fenstern lautet

192.168.57.141 scentos

Der entsprechende Inhalt in / etc / hosts in der virtuellen Maschine ist (beachten Sie, dass der unten stehende localhost-Teil ebenfalls nicht fehlt, andernfalls können Fenster immer noch nicht verbunden werden).

192.168.57.141 scentos
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

Der entsprechende Inhalt in / etc / hostname in der virtuellen Maschine ist

scentos

Nachdem der Inhalt der beiden Dateien in der virtuellen Maschine geändert wurde, wird der Neustart wirksam. Sie können auch den folgenden Befehl verwenden, um den Hostnamen vorübergehend zu ändern

[root@scentos spark-2.1.0]# hostname scentos

2. Kopieren Sie hive-site.xml in das Verzeichnis conf des Spark-Verzeichnisses und schalten Sie die tez-Engine aus

3. Überprüfen Sie die SDS- und DBS-Tabellen von hive in mysql. Wenn hdfs zuvor localhost zum Speichern von Daten verwendet hat, ändern Sie localhost in echte 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. Kopieren Sie hive-site.xml, core-site.xml und hdfs.xml in das Ressourcenverzeichnis in der Idee, in dem die tez-Engine geschlossen werden soll, nachdem hive-site.xml kopiert wurde

5. Fügen Sie Abhängigkeiten in die POM-Datei des Ideenprojekts ein

<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. Schreiben Sie nach dem Starten des Spark-Clusters, des Hive-Metastores und des Hbase-Clusters den folgenden Code in das Projekt, wobei zookeeperIp, zookeeperPort und hbaseMasterURL durch Ihre eigene ZooKeeper-Adresse, Ihren Port und Ihre HBase-Adresse ersetzt werden

        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();

Ersetzen Sie die Parameter von session.sql () durch Ihre eigene SQL-Anweisung, kompilieren Sie sie und führen Sie sie aus

Ich denke du magst

Origin blog.csdn.net/qq_37475168/article/details/107895729
Empfohlen
Rangfolge