spark3.0.1版本查詢Hbase數據庫例子

需求背景

現有需求,需要采用spark查詢hbase數據庫的數據同步到中間分析庫,記錄spark集成hbase的簡單例子代碼

import org.apache.hadoop.hbase.HBaseConfiguration
import org.apache.hadoop.hbase.client.{ConnectionFactory, Scan}
import org.apache.hadoop.hbase.util.Bytes
import org.apache.spark.sql.SparkSessionobject ReadHBaseData {def main(args: Array[String]): Unit = {// 創建SparkSessionval spark = SparkSession.builder().appName("ReadHBaseData").master("local").getOrCreate()// 創建HBase配置val conf = HBaseConfiguration.create()// 設置HBase連接參數conf.set("hbase.zookeeper.quorum", "localhost")conf.set("hbase.zookeeper.property.clientPort", "2181")// 創建HBase連接val connection = ConnectionFactory.createConnection(conf)// 創建HBase表val tableName = "my_table"val table = connection.getTable(TableName.valueOf(tableName))// 創建HBase掃描對象val scan = new Scan()// 設置要讀取的列族和列scan.addColumn(Bytes.toBytes("cf"), Bytes.toBytes("column1"))scan.addColumn(Bytes.toBytes("cf"), Bytes.toBytes("column2"))// 執行HBase掃描val scanner = table.getScanner(scan)// 遍歷掃描結果并將結果轉換為RDDval rdd = spark.sparkContext.parallelize(scanner.iterator().asScala.map(result => {val rowKey = Bytes.toString(result.getRow)val value1 = Bytes.toString(result.getValue(Bytes.toBytes("cf"), Bytes.toBytes("column1")))val value2 = Bytes.toString(result.getValue(Bytes.toBytes("cf"), Bytes.toBytes("column2")))(rowKey, value1, value2)}).toList)// 將RDD轉換為DataFrameval df = spark.createDataFrame(rdd).toDF("rowKey", "value1", "value2")// 顯示DataFrame內容df.show()// 關閉HBase連接scanner.close()table.close()connection.close()// 關閉SparkSessionspark.stop()}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/21822.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/21822.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/21822.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Marin說PCB之Max parallel知多少?

今天是個陽光明媚,萬里烏云的好日子。小編我一如既往地到家打開電腦準備看騰訊視頻的五十公里桃花塢的第四季,在看到汪蘇瀧汪臺說650電臺要解散的時候小編我差點也哭了。650電臺之于桃花塢就像樂隊的鼓手一樣,都是一個團隊的靈感啊&#xff0…

CSS中的長度單位詳解

在CSS中,長度單位是定義元素尺寸、間距、邊距等的重要工具。不同的長度單位具有不同的特性和使用場景。 絕對長度單位 絕對長度單位在所有設備和瀏覽器中表示相同的長度。這些單位包括: 1.像素(px) 像素是最常用的長度單位。一…

C語言分支和循環(2)

我的相關博客: C語言的分支與循環(1) 1.switch語句 除了 if 語句外,C語?還提供了 switch 語句來實現分?結構。 switch 語句是?種特殊形式的 的 if...else 結構,?于判斷條件有多個結果的情況。它把多重 else if…

非質量成本總結

非質量成本 非質量成本 定義 舉例 固定成本 不隨生產量或工作量變動而變動的成本 辦公室租賃費 可變成本 隨著生產量或工作變動而變動的成本 材料費 直接成本 可以直接計入某項目的成本 工人工資 間接成本 不能直接計入某項目而需要再幾個項目之間或在項目與職能部…

Linux基本指令3

Linux基本指令3 目錄 Linux基本指令3 一、Linux文件系統管理 二、Linux進程與服務管理

億發:制造型企業信息化規劃——從破冰到全面落地

在制造型企業中,信息化規劃的落地是一個復雜而關鍵的過程。盡管規劃和藍圖可能已經制定完畢,但如何成功地實施信息化才是關鍵所在。本文將詳細介紹制造型企業信息化規劃的落地過程,通過三個周期逐步推進,最終實現信息化與自動化的…

深度學習知識與心得

目錄 深度學習簡介 傳統機器學習 深度學習發展 感知機 前饋神經網絡 前饋神經網絡(BP網絡) 深度學習框架講解 深度學習框架 TensorFlow 一個簡單的線性函數擬合過程 卷積神經網絡CNN(計算機視覺) 自然語言處理NLP Wo…

OpenAI助手API接入-問答對自動生成

支持GPT-3.5-Turbo, GPT-4o, GPT-4-Turbo import json import openai from pathlib import Path import os client openai.OpenAI(base_urlbase_url, api_keyapi_key) file client.files.create( fileopen("H3.pdf", "rb"), purposeassistants ) …

HTTP 的三次握手

????? HTTP 的三次握手是指在建立 TCP 連接時,客戶端和服務器之間進行的三步握手過程。這個過程確保了雙方都能夠互相通信,并且同步了彼此的序列號和確認號。 概念: 第一次握手:客戶端發送一個 SYN(同步…

2.1數據的表示和運算--進位制

2.數據的表示和運算 2.1進位制 🔺問題:計算機采用二進制有什么優點? 答: 1.制造兩個穩態的物理器件較容易。 2.二進制的運算規則簡單。 3.便于用邏輯門電路實現運算。 4.二進制的0和1正好對應邏輯值真和假。 🔺…

成功解決“ModuleNotFoundError: No Module Named ‘utils’”錯誤的全面指南

成功解決“ModuleNotFoundError: No Module Named ‘utils’”錯誤的全面指南 在Python編程中,遇到ModuleNotFoundError: No Module Named utils這樣的錯誤通常意味著Python解釋器無法找到名為utils的模塊。這可能是由于多種原因造成的,比如模塊確實不存…

念念不忘,必有回響 的 echo

念念不忘,必有回響 的 echo 念念不忘,必有回響 的 echo幾個示例更多信息 念念不忘,必有回響 的 echo echo命令用于在終端設備上輸出字符串或變量的值,類似于Python的print和C語言的printf,是Linux系統中最常用的命令…

【GIC400】——PLIC,NVIC 和 GIC 中斷對比

文章目錄 PLIC,NVIC 和 GIC 中斷對比中斷向量表PLIC中斷向量表中斷使能中斷服務函數NVIC中斷向量表中斷使能中斷服務函數GIC中斷向量表系列文章 【ARMv7-A】——異常與中斷 【ARMv7-A】——異常中斷處理概述

深度學習筆記:0.cuda安裝,成功

B站上說:cs上騙子太多。文章太久,我深以為然。用了一天。才裝好。其實很簡單。 CUDA安裝教程(超詳細)-CSDN博客文章瀏覽閱讀1w次,點贊5次,收藏56次。windows10 版本安裝 CUDA ,首先需要下載兩個…

AI技術的演進與未來

隨著科技的不斷進步,人工智能(AI)技術已經成為引領時代發展的重要力量。從最初的模糊概念到如今的具體應用,wre98.cnAI技術已經滲透到我們生活的方方面面,并不斷拓展其邊界。本文將探討AI技術的演進歷程、當前應用領域…

【并發程序設計】總篇集(八萬字)

11_Concurrent_Programing 1.進程概念 在Linux中,進程是操作系統分配資源和調度運行的基本單位。 Linux中的進程有以下用處: 提高CPU利用率:通過進程的并發執行,可以讓多個程序同時利用計算機的資源,這樣每個用戶都…

Springboot與mongodb集成及聚合查詢

Spring Boot 與 MongoDB 的集成為開發者提供了一種簡便的方式來構建高性能、基于文檔的數據驅動應用程序。MongoDB 是一個非關系型數據庫(NoSQL),它使用 JSON 格式的文檔進行數據存儲,非常適合處理大量的、半結構化的數據。而 Spr…

mybatisplus 字段存的是json 在查詢的時候怎么映射成對象

數據庫交互對象 TableName(value "表名", autoResultMap true)TableField(typeHandler JacksonTypeHandler.class, value "user_info")private User user;autoResultMap 是一個 MyBatis-Plus 中的注解屬性,用于控制是否自動生成結果映射。…

部署metrics-server

kubeadm部署metrics-server 需求:生產環境是kubeadm部署的v1.22.2版本的k8s,統計資源時發現這套環境沒有部署metrics-server這個服務,今天來部署一下 1、在github社區找到這個項目并下載 rootjumpserver-cmcc:~# wget https://github.com/…

你需要知道關于 Java 線程一些最基本的事情

你好,我是 shengjk1,多年大廠經驗,努力構建 通俗易懂的、好玩的編程語言教程。 歡迎關注!你會有如下收益: 了解大廠經驗擁有和大廠相匹配的技術等 希望看什么,評論或者私信告訴我! 文章目錄 一…