1. 程式人生 > >分散式sparkSQL引擎應用:從遠端通過thriftServer連線spark叢集處理hive中的資料

分散式sparkSQL引擎應用:從遠端通過thriftServer連線spark叢集處理hive中的資料

實現原理:

客戶端(java程式)與thriftServer連線,thriftServer再代理客戶端轉換成spark的操作流程,再載入hive的資料到spark的worker節點,並執行Map-Reduce作業。這裡只是個小案例,和大家一起來探討一下原理。

步驟:

分發三個配置檔案hdfs-site.xml、core-site.xml、hive-site.xml到所有worker節點 ==> 
 在有關的庫下建立hive的資料表 ==> 
載入資料到hive表中 ==>
啟動hdfs(如果有資料存放在hadoop叢集的資料節點) ==>
啟動spark叢集(建議啟動模式:完全分散式)==> 
啟動thriftserver伺服器 ==>
執行java程式碼。


[
[email protected]
sbin]$ netstat -nao | grep 1000
tcp6       0      0 :::10000                :::*                    LISTEN      off (0.00/0/0)
【pom.xml加依賴包:hive-jdbc 2.1.0】

data.txt 內容:
1,tom,12
2,tomas,13
3,tomas Lee,14
4,tony kidkid,15


【/Users/tonykidkid/programjava/SparkDemo/SparkDemo1/src/main/scala_java/ThriftClient.java】示例原始碼如下——


import java.sql.*;


/**
 * 通過此客戶端程式訪問sparkSQL分散式引擎
 */

public class ThriftClient {
    public static void main(String[] args) {
        try {
            Class.forName( "org.apache.hive.jdbc.HiveDriver" );
            Connection conn = DriverManager.getConnection( "jdbc:hive2://h201:10000" );
            Statement st = conn.createStatement();
            ResultSet rs = st.executeQuery( "SELECT count(1) FROM mydb.tt WHERE age > 13"
);
            while(rs.next()){
                int count = rs.getInt( 1 );
                System.out.println( count );
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
【控制檯輸出結果如下】
2


到web頁面檢視:
http://172.16.112.201:8080 ==> Running Applications
檢視到:
Application IDNameCoresMemory per NodeSubmitted TimeUserStateDuration
app-20170501050836-0000 (kill)Thrift JDBC/ODBC Server31024.0 MB2017/05/01 05:08:36centosRUNNING37 min


點選 ApplicationID ==> 點選 Application Detail UI ==>
從Completed Jobs表格看到Description內容就是java原始碼裡面的SQL語句,
繼續點選Description裡的連結,進到Details for Job頁面 ==>
點選DAG Visualization就能看到各個階段的任務執行情況。

相關推薦

分散式sparkSQL引擎應用遠端通過thriftServer連線spark叢集處理hive資料

實現原理: 客戶端(java程式)與thriftServer連線,thriftServer再代理客戶端轉換成spark的操作流程,再載入hive的資料到spark的worker節點,並執行Map-Re

分散式學習筆記二分散式一致性談到CAP理論、BASE理論

問題的提出 在電腦科學領域,分散式一致性是一個相當重要且被廣泛探索與論證問題,首先來看三種業務場景。 1、火車站售票 假如說我們的終端使用者是一位經常坐火車的旅行家,通常他是去車站的售票處購買車 票,然後拿著車票去檢票口,再坐上火車,開始一段美好的旅行----一切似乎都是那麼和諧。想象一

分散式學習最佳實踐分散式系統的特徵開始(附思維導圖)

什麼是分散式系統 回到頂部   分散式系統是由一組通過網路進行通訊、為了完成共同的任務而協調工作的計算機節點組成的系統。分散式系統的出現是為了用廉價的、普通的機器完成單個計算機無法完成的計算、儲存任務。其目的是利用更多的機器,處理更多的資料。   首先需要明確的是,只

在Kubernetes上執行有狀態應用StatefulSet到Operator

    一開始Kubernetes只是被設計用來執行無狀態應用,直到在1.5版本中才添加了StatefulSet控制器用於支援有狀態應用,但它直到1.9版本才正式可用。本文將介紹有狀態和無狀態應用,一個通過K8S StatefulSet來編排有狀態應用的示例,以及當前有狀態應用容器化現狀及

【轉】編寫高質量代碼改善C#程序的157個建議——建議68System.Exception或其他常見的基本異常派生異常

base 信息 crypt 滿足 需要 sys sdn private exc 建議68:從System.Exception或其他常見的基本異常中派生異常 微軟建議:從System.Exception或其他常見基本異常之一派生異常。在Visual Studio中輸入Ex

SpringBoot通過JedisCluster連線Redis叢集分散式專案)

分散式專案 SpringBoot + Redis使用 現在開發流行微服務、分散式,基於這種情況需要使用redis不想每個專案都去寫重複的程式碼,所以我在工具包中封裝了redis這一塊的連線,但是問題是所有的專案都會依賴我的基礎包,卻不是所有的專案都要使用redis。所以我需要根據業務

《Python 程式設計入門到實踐》第十五章(生成資料)練習題答案

# -*- coding: gbk -*- import matplotlib.pyplot as plt input_values = [1,2,3,4,5] squares = [1,4,9,16,25] plt.plot(input_values,squ

《Python 程式設計入門到實踐》第十六章(下載資料)練習題答案

import csv from datetime import datetime from matplotlib import pyplot as plt filename = 'sitka_weather_07-2014.csv' with open(file

Spring Cloud Config(分散式配置中心)使用git作為遠端配置中心連線資料庫配置

為什麼要用SpringCloud分散式配置中心? 在分散式系統中,由於服務數量巨多,為了方便服務配置檔案統一管理,實時更新,所以需要分散式配置中心元件。 在SpringCloud中,有分

家中通過vpn連線到公司的外網伺服器,以進入其內網

前言:需要單位開通相關賬號,以及支援在家辦公。 一、新建vpn連線:   上圖中IP填寫單位外網伺服器的IP 新建vpn完成後,登入需要vpn賬號,需要管理員開通。 二、登入vpn後的操作: 1.可以遠端登入到該外網伺服器:連線地址為192.168.1.100

網路爬蟲初步一個入口連結開始不斷抓取頁面的網址併入庫

前言:   在上一篇《網路爬蟲初步:從訪問網頁到資料解析》中,我們討論瞭如何爬取網頁,對爬取的網頁進行解析,以及訪問被拒絕的網站。在這一篇部落格中,我們可以來了解一下拿到解析的資料可以做的事件。在這篇部落格中,我主要是說明要做的兩件事,一是入庫,二是遍歷拿到的連結繼續訪問。

通過Kafka在ignite叢集之間進行實時資料複製

版本1.6的ApacheIgnite提供了一種基於KafkaConnect進行資料處理的新方法。Kafka Connect是ApacheKafka 0.9中引入的一個新特性,它支援ApacheKafka和其他資料系統之間的可伸縮和可靠的流資料。它使得在記憶體中向您的可伸縮和安

SparkSql將資料來源Hive資料匯入MySql例項

背景:能看到這篇部落格的夥計兒,應該是充分理解了[理想是豐滿的 現實是骨感]  這句名言了吧。為啥子這麼說呢,那就是 不就是個SparkSql從hive匯入到mysql嗎 有什麼技術含量,但是呢 不斷地踩坑ing填坑ing。 廢話不多說,直接上硬菜。 package co

通過 mysq + 連線池 來獲取資料庫資料的模組

var pool = require('mysql').createPool({ port:'3306', user:'root', //登入名 一般為root password:'root', //登入密碼 一般為root database:'cfp', //

通過指令碼和EL表示式獲取域資料

<%@ page import="net.wen.bean.User" %> <%@ page import="java.util.List" %> <%@ page

zabbix企業應用通過SNMP和iDRAC監控DELL服務器硬件

創建 idv epo pla dev 責任 state cti update 原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://qicheng0211.blog.51cto.com/3958621/1749

研究到應用騰訊AI Lab的自然語言理解和生成

智能語言 AI 3月16日在騰訊AILab第二屆學術論壇上,騰訊AI Lab高級研究員李菁博士介紹了實驗室目前在NLP方面重點關註的兩大方向——如何理解和生成自然語言,並介紹了實驗室的相關研究和應用成果。自然語言的理解自然語言理解的目標是使得機器能夠像人一樣進行閱讀。機器不能像人一樣通過直覺和感知來理

ubuntuscp遠端下載或本地上傳

1.如果沒有按照ssh,則執行以下命令 sudo apt-get install ssh 2.ssh遠端登入ubuntu機器 ssh [email protected] 3.將遠端檔案從遠端ubuntu機器下載到本地 scp [email protecte

多工學習概述論文定義和方法到應用和原理分析

多工學習是一個很有前景的機器學習領域,相關的理論和實驗研究成果以及應用也在不斷湧現。近日,香港科技大學電腦科學與工程系的楊強教授和張宇助理教授在《國家科學評論(National Science Review)》2018 年 1 月份釋出的「機器學習」專題期刊中發表了題為《An overview of