A:SparkSql操作のmysql
古いルール:公共のうち最初の方法:
輸入java.util.Arrays
インポートorg.apache.spark.SparkConf
インポートorg.apache.spark.api.java.JavaSparkContextの
インポートorg.apache.spark.sql。{DATAFRAME、ロウ、SparkSession、機能}
インポートorg.apache.spark.sql.functions。{ COL、DESC、長さ、ROW_NUMBER、トリム、場合}
インポートorg.apache.spark.sql.functions。{COUNTDISTINCT、合計、カウント、平均}
インポートorg.apache.spark.sql.functions.concatの
インポートorg.apache.spark .sql.types。{LongType、StringType、StructField、StructType}
インポートorg.apache.spark.sql.expressions.Window
インポートorg.apache.spark.storage.StorageLevel
インポートorg.apache.spark.sql.SaveModeの
インポート持つjava.util 。配列リスト
オブジェクトWORDCOUNT {
DEF dataAndJdbcoption()= {
ヴァルsparkSession = SparkSession.builder()。マスター( "ローカル")。getOrCreate()
ヴァルjavasc =新しいJavaSparkContext(sparkSession.sparkContext)
ヴァルnameRDD1 = javasc.parallelize(は、Arrays.asList( "{ 'ID': '7'}"、 "{ 'ID': '8'}"、 "{ 'ID': '9'}"));
ヴァルnameRDD1df = sparkSession.read.json(nameRDD1)
ヴァル・小道具=新しいjava.util.Properties
prop.setProperty( "ユーザー"、 "ルート")
prop.setProperty( "パスワード"、 "123456")
prop.setProperty(「ドライバ」、 "はcom.mysql.jdbc.Driver")
prop.setProperty( "DBTABLE"、 "ブログ")
prop.setProperty( "URL"、 "JDBCます。mysql://127.0.0.1:3306 /テスト")
(nameRDD1df 、小道具)
}
}
MySQLを読みます
ヴァルDF = dataAndJdbcoption()._ 1
ヴァル支柱= dataAndJdbcoption()._ 2
ヴァルsparkSession = SparkSession.builder()。マスター( "ローカル")。getOrCreate()
ヴァルデータ= sparkSession.read.format( "JDBC")。オプション( "ユーザー"、 "ルート")。オプション( "パスワード"、 "123456")
.OPTION( "ドライバ"、 "はcom.mysql.jdbc.Driver")
。オプション( "URL"、 "JDBCます。mysql://127.0.0.1:3306 /テスト").OPTION( "DBTABLE"、 "ブログ")
.LOAD()
data.show(100)
MySQLを書きます
ヴァルDF = dataAndJdbcoption()._ 1
ヴァル支柱= dataAndJdbcoption()._ 2
df.write.mode(SaveMode.Append).jdbc(prop.getProperty( "URL")、prop.getProperty( "DBTABLE")、プロパ)
2:ハイブを操作SparkSql
企業データは、ハイブを読みます
実際には、最終文書を生成するために、ファイルのハイブテーブルの場所をお読みください。
会社の書き込みデータハイブ
データファイルがハイブにロードされます生成します
直接ハイブを操作するSQLデータ
confに=新しい新SparkConfヴァル()。setAppName(「WORDCOUNT」)
//マージ小さなファイル、sparksqlデフォルト200タスクの実行可能ファイルがあり、それは小さなたくさんのファイルを生成します。実際には、多くのパラメータを最適化することが可能である(「-v SET」)sparkSession.sqlを見ます
conf.set( "mapreduce.input.fileinputformat.split.minsize"、 "1024000000")
conf.set( "mapreduce.input.fileinputformat.split.maxsize"、 "1024000000")
conf.set(「mapreduce.input.fileinputformat .split.minsize.per.node " "1024000000")
conf.set( "mapreduce.input.fileinputformat.split.maxsize.per.node"、 "1024000000")
conf.set(" mapreduce.input.fileinputformat.split .minsize.per.rack」、 "1024000000")
conf.set( "mapreduce.input.fileinputformat.split.maxsize.per.rack"、 "1024000000")
ヴァルsparkSession = SparkSession.builder()。enableHiveSupport()。コンフィグ(CONF).getOrCreate()
sparkSession.sql( "sparksqlTempTableからAAを選択するテーブルtable1に挿入")
上記の方法に加えて、ファイルを組み合わせることができ、ファイルをマージする方法があります。
ヴァルデータフレーム= sparkSession.sql( "テーブルからAAを選択").coalesce(3); //日志看タスク数量3
dataFrame.createOrReplaceTempView(" sparksqlTempTable")
sparkSession.sql( "sparksqlTempTableからAAを選択TABLE1テーブルに挿入")
ほとんどの操作のSQL操作が挿入する必要があるので、この方法は実用的ではありません。
オンラインは、第三の方法があると言いました:
SQLで再区分(4)を挿入するために、私は実験中におそらく唯一HiveSql自体にこの構文のために、仕事、およびSparkSql何の効果を使用しません。
栗子:テーブルから選択/ * +配分(4)* / AA