Spark-SQL(四)

本節課學習了spark連接hive數據,在 spark-shell 中,可以看到連接成功

將依賴放進pom.xml中

運行代碼

創建文件夾 spark-warehouse?

為了使在 node01:50070 中查看到數據庫,需要添加如下代碼,就可以看到新創建的數據庫 spark-sql_1

import org.apache.spark.SparkConf
import org.apache.spark.sql.SparkSessionobject HiveSupport {def main(args: Array[String]): Unit = {val sparkConf = new SparkConf().setMaster("local[*]").setAppName("hql")val spark = SparkSession.builder().enableHiveSupport().config("spark.sql.warehouse.dir", "hdfs://node01:9000/user/hive/warehouse").config(sparkConf).getOrCreate()if (!spark.catalog.databaseExists("spark_sql_1")) {spark.sql("create database spark_sql_1")}spark.sql("use spark_sql_1")// 創建表spark.sql("""|create table json(data string)|row format delimited|""".stripMargin)spark.sql("load data local inpath 'Spark-SQL/input/movie.txt' into table json")spark.sql("select * from json").show()spark.sql("""|create table movie_info|as|select get_json_object(data,'$.movie') as movie,|get_json_object(data,'$.uid') as uid|from json|""".stripMargin)spark.sql("select * from movie_info").show()spark.stop()}
}

可以使用提取數據

運行結果

實驗報告

將數據放進input中,并運行如下代碼,用于輸出統計有效數據條數用戶數量最多的前二十個地址

import org.apache.spark.SparkConf
import org.apache.spark.sql.SparkSessionobject uid {def main(args: Array[String]): Unit = {val sparkConf = new SparkConf().setMaster("local[*]").setAppName("JsonDataAnalysis")val spark = SparkSession.builder().enableHiveSupport().config("spark.sql.warehouse.dir", "hdfs://node01:9000/user/hive/warehouse").config(sparkConf).getOrCreate()// 使用spark-sql_1數據庫spark.sql("use spark_sql_1")// 創建表用于存儲原始JSON數據-uidspark.sql("""|create table if not exists data_set(data string)|row format delimited|""".stripMargin)// 加載json數據到uid表中spark.sql("load data local inpath 'D:/school/workspace/workspace-IJ/Spark/Spark-SQL/input/user_login_info.json' into table data_set")// 判斷filter_data表是否存在,若存在則刪除(可根據實際需求調整此處邏輯,比如不刪除直接使用等)if (spark.catalog.tableExists("spark_sql_1.filter_data")) {spark.sql("drop table filter_data")}// 篩選數據(不是null的)并創建filter_data表spark.sql("""|create table filter_data|as|select|    get_json_object(data, '$.uid') as uid,|    get_json_object(data, '$.phone') as phone,|    get_json_object(data, '$.addr') as addr|from|    data_set|where|    get_json_object(data, '$.uid') is not null|    and get_json_object(data, '$.phone') is not null|    and get_json_object(data, '$.addr') is not null|""".stripMargin)// 統計有效數據條數val validDataCount = spark.sql("select count(*) from filter_data").collect()(0)(0).toString.toLongprintln(s"有效數據條數: $validDataCount")// 統計每個地址的用戶數量并排序,取前20spark.sql("""|select|    addr,|    count(*) as user_count|from|    filter_data|group by|    addr|order by|    user_count desc|limit 20|""".stripMargin).show()spark.stop()}
}

運行結果:

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

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

相關文章

野外價值觀:在真實世界的語言模型互動中發現并分析價值觀

每周跟蹤AI熱點新聞動向和震撼發展 想要探索生成式人工智能的前沿進展嗎?訂閱我們的簡報,深入解析最新的技術突破、實際應用案例和未來的趨勢。與全球數同行一同,從行業內部的深度分析和實用指南中受益。不要錯過這個機會,成為AI領…

el-select+vue-virtual-scroller解決數據量大卡頓問題

解決el-select中數據量過大時,顯示及搜索卡頓問題,及正確的回顯默認選中數據 粗略的封裝了組件,有需要各種屬性自定義的,自己添加設置下 環境 node 16.20.1 npm 8.19.4 vue2、element-ui "vue-virtual-scroller"…

Sqlite3交叉編譯全過程

Sqlite3交叉編譯全過程 一、概述二、下載三、解壓四、配置五、編譯六、安裝七、驗證文件類型八、移植8.1、頭文件sqlite3.h8.2、動態鏈接庫移植8.3、靜態態鏈接庫移植 九、驗證使用9.1. 關鍵函數說明 十、觸發器使用十一、sqlite表清空且恢復id值十二、全文總結 一、概述 SQLi…

軟考軟件設計師考試情況與大綱概述

文章目錄 **一、考試科目與形式****二、考試大綱與核心知識點****科目1:計算機與軟件工程知識****科目2:軟件設計** **三、備考建議****四、參考資料** 這是一個系列文章的開篇 本文對2025年軟考軟件設計師考試的大綱及核心內容進行了整理,并…

【數學建模】孤立森林算法:異常檢測的高效利器

孤立森林算法:異常檢測的高效利器 文章目錄 孤立森林算法:異常檢測的高效利器1 引言2 孤立森林算法原理2.1 核心思想2.2 算法流程步驟一:構建孤立樹(iTree)步驟二:構建孤立森林(iForest)步驟三:計算異常分數 3 代碼實現…

【Android面試八股文】Android系統架構【一】

Android系統架構圖 1.1 安卓系統啟動 1.設備加電后執行第一段代碼:Bootloader 系統引導分三種模式:fastboot,recovery,normal: fastboot模式:用于工廠模式的刷機。在關機狀態下,按返回開機 鍵進…

jvm-獲取方法簽名的方法

在Java中,獲取方法簽名的方法可以通過以下幾種方式實現,具體取決于你的需求和使用場景。以下是詳細的介紹: 1. 使用反射 API Java 提供了 java.lang.reflect.Method 類來獲取方法的相關信息,包括方法簽名。 示例代碼&#xff1a…

DeepSeek和Excel結合生成動態圖表

文章目錄 一、前言二、3D柱狀圖案例2.1、pyecharts可視化官網2.2、Bar3d-Bar3d_puch_card2.3、Deepseek2.4、WPS2.5、動態調整數據 一、前言 最近在找一些比較炫酷的動態圖表,用于日常匯報,于是找到了 DeepseekExcel王牌組合,其等同于動態圖…

探索 .bat 文件:自動化任務的利器

在現代計算機操作中,批處理文件(.bat 文件)是一種簡單而強大的工具,它可以幫助我們自動化重復性任務,工作效率提高。盡管隨著編程語言和腳本工具的發展,.bat 文件的使用頻率有所下降,但它依然是…

PyTorch與自然語言處理:從零構建基于LSTM的詞性標注器

目錄 1.詞性標注任務簡介 2.PyTorch張量:基礎數據結構 2.1 張量創建方法 2.2 張量操作 3 基于LSTM的詞性標注器實現 4.模型架構解析 5.訓練過程詳解 6.SGD優化器詳解 6.1 SGD的優點 6.2 SGD的缺點 7.實用技巧 7.1 張量形狀管理 7.2 廣播機制 8.關鍵技…

【C++】特殊類的設計、單例模式以及Cpp類型轉換

📚 博主的專欄 🐧 Linux | 🖥? C | 📊 數據結構 | 💡C 算法 | 🌐 C 語言 上篇文章: C 智能指針使用,以及shared_ptr編寫 下篇文章: C IO流 目錄 特殊類的設…

探索 Flowable 后端表達式:簡化流程自動化

什么是后端表達式? 在 Flowable 中,后端表達式是一種強大的工具,用于在流程、案例或決策表執行期間動態獲取或設置變量。它還能實現自定義邏輯,或將復雜邏輯委托…… 后端表達式在 Flowable 的后端運行,無法訪問前端…

【Lua】Lua 入門知識點總結

Lua 入門學習筆記 本教程旨在幫助有編程基礎的學習者快速入門Lua編程語言。包括Lua中變量的聲明與使用,包括全局變量和局部變量的區別,以及nil類型的概念、數值型、字符串和函數的基本操作,包括16進制表示、科學計數法、字符串連接、函數聲明…

符號速率估計——小波變換法

[TOC]符號速率估計——小波變換法 一、原理 1.Haar小波變換 小波變換在信號處理領域被成為數學顯微鏡,不同于傅里葉變換,小波變換可以觀測信號隨時間變換的頻譜特征,因此,常用于時頻分析。 ??當小波變換前后位置處于同一個碼元…

android contentProvider 踩坑日記

寫此筆記原因 學習《第一行代碼》到第8章節實現provider時踩了一些坑,因此記錄下來給后來人和自己一個提示,僅此而已。 包含內容 Sqlite數據庫CURD內容provider界面provider項目中書籍管理provider實現邏輯用adb shell確認providercontentResolver接收…

Eureka、LoadBalance和Nacos

Eureka、LoadBalance和Nacos 一.Eureka引入1.注冊中心2.CAP理論3.常見的注冊中心 二.Eureka介紹1.搭建Eureka Server 注冊中心2.搭建服務注冊3.服務發現 三.負載均衡LoadBalance1.問題引入2.服務端負載均衡3.客戶端負載均衡4.Spring Cloud LoadBalancer1).快速上手2)負載均衡策…

【開關電源】關于GaN反激電源開關噪聲

文章目錄 0 前言1 設計信息1.1 設計需求1.2 原理圖1.3 電源表現 2 原因分析3 橫向對比TI UCG28826 (GaN)采購的普通QR反激變換器 4 總結 0 前言 筆者原計劃設計一款省電的,效率尚可的,穩定的2路輸出反激電源,用于系統…

DOCA介紹

本文分為兩個部分: DOCA及BlueField介紹如何運行DOCA應用,這里以DNS_Filter為例子做大致介紹。 DOCA及BlueField介紹: 現代企業數據中心是軟件定義的、完全可編程的基礎設施,旨在服務于跨云、核心和邊緣環境的高度分布式應用工作…

mybatis mapper.xml中使用枚舉

重點:application.propertis配置類 #TypeEnumHandler 這個類的包名,不是全路徑 mybatis.type-handlers-packagecom.fan.test.handler兩個枚舉類: public enum StatusEnum {DELETED(0),ACTIVE(1);private final int code;StatusEnum(int cod…

鴻蒙生態:鴻蒙生態校園行心得

(個人觀點,僅供參考) 兄弟們,今天來淺淺聊一聊這次的設立在長沙的鴻蒙生態行活動。 老樣子,我們先來了解一下這個活動: Harmon&#x…