SparkSql篇3:SparkSql读写kudu

6 篇文章 0 订阅
1 篇文章 0 订阅

SparkSql篇3:SparkSql读写kudu

spark操作kudu的方式有很多,spark封装了KuduContext,里面有kudu的增删改查
本文主要正对sparksql,利用外部数据源方式,直接从sql层面进行读写kudu

废话不多说,直接上干货

package kudu

import org.apache.kudu.spark.kudu.KuduContext
import org.apache.spark.SparkContext
import org.apache.spark.sql.SparkSession
import org.apache.kudu.spark.kudu

object sparkKuduReadAndWrite {
  def main(args: Array[String]): Unit = {
  val sparkSession = SparkSession.builder()
       .master("local")
      .appName("appName")
      .config("spark.testing.memory","471859200")
      .getOrCreate()
      
 // 从kudu中读
   val kudureader= {sparkSession.read
      .format("org.apache.kudu.spark.kudu")
      .option("kudu.master","cdh2:7051")
      .option("kudu.table","spark_kudu")
      .load()}
      
   //    在hive中建立临时表
    kudureader.createTempView("xydate1")    
    sparkSession.sqlContext.cacheTable("xydate1")
    //    像操作hive一样操作es(es的临时表)
    val datas= sparkSession.sql("select * from xydate1")

    {datas.write
      .format("org.apache.kudu.spark.kudu")
    .option("kudu.master", "cdh2:7051")
    .option("kudu.table", "xytest")
    .mode("append").save()}
    sparkSession.sqlContext.uncacheTable("xydate1")
    sparkSession.stop()

  }
}

pom如下:

      <dependency>
            <groupId>org.apache.kudu</groupId>
            <artifactId>kudu-client</artifactId>
            <version>${kudu.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.kudu</groupId>
            <artifactId>kudu-spark2_2.11</artifactId>
            <version>${kudu.version}</version>
        </dependency>
根据提供的引用内容,没有直接回答“sparksql kudu truncate”的信息。但是,可以根据引用和引用提供的信息,回答如下问题:“Spark如何使用Kudu进行数据操作?” Spark可以通过Kudu的API或者Spark-Kudu Connector来操作Kudu表。使用Spark-Kudu Connector可以方便地在Spark中使用Kudu表,而不需要编写额外的代码。具体步骤如下: 1. 在pom.xml文件中添加以下依赖: ``` <dependency> <groupId>org.apache.kudu</groupId> <artifactId>kudu-spark2_2.11</artifactId> <version>1.10.0</version> </dependency> ``` 2. 使用SparkSession创建一个KuduContext对象: ``` import org.apache.kudu.spark.kudu._ val spark = SparkSession.builder() .appName("KuduExample") .master("local[*]") .getOrCreate() val kuduContext = new KuduContext("kudu.master:7051", spark.sparkContext) ``` 3. 使用KuduContext对象创建一个Kudu表: ``` import org.apache.kudu.client.CreateTableOptions import org.apache.kudu.spark.kudu._ val tableName = "my_table" val schema = StructType(Seq( StructField("key", StringType), StructField("value", IntegerType) )) val keys = Seq("key") val options = new CreateTableOptions() options.addHashPartitions(keys.asJava, 3) kuduContext.createTable(tableName, schema, keys, options) ``` 4. 使用KuduContext对象将数据写入Kudu表: ``` import org.apache.spark.sql._ val data = Seq( Row("foo", 1), Row("bar", 2), Row("baz", 3) ) val rdd = spark.sparkContext.parallelize(data) val df = spark.createDataFrame(rdd, schema) kuduContext.insertRows(df, tableName) ``` 5. 使用KuduContext对象从Kudu表中读取数据: ``` val kuduDF = spark.read.options(Map("kudu.master" -> "kudu.master:7051", "kudu.table" -> tableName)).kudu kuduDF.show() ``` 以上是使用Spark-Kudu Connector进行Kudu表的操作的基本步骤。至于“truncate”操作,可以使用KuduContext对象的truncateTable方法来清空Kudu表中的数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值