1。スパークSQLの基本的な操作
{ " ID ":1、" 名前":" エラ"、" 年齢":36 } { " ID ":2、" 名称":" ボブ"、" 年齢":29 } { " ID ":3、" 名前":" ジャック"、" 年齢":29 } { " ID ":4、" 名前":" ジム"、" 年齢":28 } { " ID ":5、" 名前":" デイモン" } { " ID ":5、" 名前":" デイモン" }
まずemployee.jsonにデータフレームを作成し、Scalaの文は次の手順を実行し、書き込み:
データフレームを作成します
スカラ>輸入org.apache.spark.sql.SparkSession
スカラ>ヴァルスパーク= SparkSession.builder()。getOrCreate()
スカラ>輸入spark.implicits._
スカラ>ヴァルDF = spark.read.json( "ファイル:///usr/local/spark/employee.json")
(1)すべてのデータのクエリデータフレーム
スケール> df.show()
(2)すべてのデータを照会し、重複データを削除します
スカラ> df.distinct()。ショー()
(3)は、すべてのデータを照会するときに印刷IDフィールドを削除します
スカラ> df.drop( "ID")。ショー()
(4)スクリーニング年齢> 20本の記録
スカラ> df.filter(DF( "年齢")> 30).SHOW()
(5)名前によるデータパケット
スカラ> df.groupBy( "名前")。)(カウント。ショー()
(6)データは、名前で昇順に配置されています
スカラ> df.sort(DF( "名前")。ASC)(.SHOW)
(7)データ線を除去する前に3
スカラ> df.take(3)或スカラ座> df.head(3)
(8)は、name列のすべてのレコードを照会すると、そのエイリアスはユーザー名です
スカラ> df.select(DF( "名前")。) "ユーザ名"(など)。(見せます)
(9)平均年齢の年齢を問い合わせます
スカラ> df.agg( "年齢" - > "平均")
(10)歳の最低年齢を問い合わせます
スカラ> df.agg( "年齢" - > "分")
2。プログラミングは、データフレームRDDに変換されます
ソース・ファイルシステムのUbuntuは/ usr / local /スパークに保存されたデータをコピーし、(ID、名前、年齢を含む)以下のように、
、1名:Employee.txtという名前の、データフレームは、変換キーを押しIDを達成RDDから取得したエラ、年齢:36フォーマット
すべてのデータのデータフレームをプリントアウト。コードを入力してください。(することができる一つの方法を選択してください)
1、エラ、36 2、ボブ、29 3、ジャック、29
カレントディレクトリは/ usr / local /火花/ mycode / rddtodf、MKDIR -pカレントディレクトリに新しいディレクトリを仮定
SRC /メイン/のスカラ座、そして地元のスパークmycodeのrddtodf SRCメイン/下/ / / / / / / ScalaのUSR新しいディレクトリを作成
オブジェクト・スキーマの特定のタイプを含むINFER RDDに反射、RDDの公知の適切なデータ構造を使用してrddtodf.scala、
変換;
輸入org.apache.spark.sql.catalyst.encoders.ExpressionEncoder 輸入org.apache.spark.sql.Encoderの 輸入spark.implicits._ オブジェクトRDDtoDF { DEFメイン(引数:配列[文字列]){ ケースの クラス従業員(ID:ロング、名前:文字列、年齢:ロング) ヴァルemployeeDF = spark.sparkContext.textFile( "ファイル:///usr/local/spark/employee.txt")の.map(_スプリット( ""。 ))をマッピング(で。 賛辞 =>従業員(属性(0).trim.toInt、属性(1)、属性(2 ).trim.toInt))。toDF() employeeDF.createOrReplaceTempView( "従業員" ) ヴァルemployeeRDD = spark.sql( "SELECT ID、名前、従業員からの年齢" ) employeeRDD.map(T => "ID:" + T(0)+ " "+"名: "+ T(1)+"、 "+"年齢" + T(2 ))を表示()。 }}