IDEA_Fancy QueryによるSparkSQLコードの記述

IDEA_Fancy QueryによるSparkSQLコードの記述

パッケージcn.itcast.sql
インポートorg.apache.spark.SparkContext
インポートorg.apache.spark.rdd.RDD
インポートorg.apache.spark.sql。{DataFrame、SparkSession}
オブジェクトQueryDemo {
ケースクラスPerson(id:Int、name :String、age:Int)
def main(args:Array [String]):Unit = {
// 1。创建SparkSession
val spark:SparkSession = SparkSession.builder()。master(“ local [ ] ")。appName(“ SparkSQL”).
getOrCreate()
val sc:SparkContext = spark.sparkContext
sc.setLogLevel(“ WARN”)
// 2。读取文件
val fileRDD:RDD [String] = sc.textFile(“ D:\ data \ person。 txt”)
val linesRDD:RDD [Array [String]] = fileRDD.map(.split( ""))
val rowRDD:RDD [Person] = linesRDD.map(line => Person(line(0).toInt、line(1)、line(2).toInt))
// 3. RDDをDFに変換
//注: RDDにはtoDFメソッドがありません。新しいバージョンでは、それにメソッドを追加する必要があります。暗黙的な変換
インポートspark.implicitsを使用できます。//

注:上記のrowRDDの一般的なタイプは、スキーマ情報を含むPersonです
// // SparkSQLリフレクションによって自動的に
取得され、DF val personDFに追加されます:DataFrame = rowRDD.toDF
personDF.show(10)
personDF.printSchema()
// =SQLクエリ=
//0。レジストリ
personDF.createOrReplaceTempView( "t_person")
// 1.すべてのデータを照会
spark.sql( "select * from t_person")。Show()
// 2. Query age + 1
spark.sql( " select age、age + 1 from t_person ")。show()
// 3.最大の年齢
spark.sqlを持つ2人をクエリします(" select name、age from t_person order by age desc limit 2 ")。show()
// 4すべての年齢のクエリ数
( "SELECT年齢、COUNT(spark.sql
年齢グループによるt_personから)")。ショー()
30歳以上// 5.クエリ
t_personからspark.sql(「選択*年齢> 30 ”).Show()
// =DSLクエリ=
// 1.すべてのデータをクエリします
personDF.select( "name"、 "age")
// 2.クエリ年齢+ 1
personDF.select( a m e " , "名前"、 "age" + 1)
// 3.
personDF.sort( " a g e " . d e s c ) . s h o w ( 2 ) / / 4. p e r s o n D F . g r o u p B y ( " a g e " ) . c o u n t ( ) . s h o w ( ) / / 5. 30 p e r s o n D F . f i l t e r ( "age" .desc).show(2)// 4.すべての年齢の人の数を問い合わせますpersonDF.groupBy( "age")。count()。show()// 5. personDF.filter(30以上の年齢)を問い合わせます "年齢"> 30).SHOW()
SCを。停止()
spark.stop()
}
}

元の記事を238件公開 賞賛された429件 ビュー250,000件

おすすめ

転載: blog.csdn.net/qq_45765882/article/details/105561091