sparksqlシリーズ(4)データベースのsparksql動作

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 

おすすめ

転載: www.cnblogs.com/wuxiaolong4/p/11707341.html