【问题标题】:Writing DataFrame to MemSQL Table in Spark在 Spark 中将 DataFrame 写入 MemSQL 表
【发布时间】:2015-11-23 17:11:20
【问题描述】:

我正在尝试使用 Spark 和 MemSQL 连接器将 .parquet 文件加载到 MemSQL 数据库中。

package com.memsql.spark

import com.memsql.spark.context._

import org.apache.spark._
import org.apache.spark.sql._
import org.apache.spark.sql.types._

import com.memsql.spark.connector._
import com.mysql.jdbc._

object readParquet {
    def main(args: Array[String]){
    val conf = new SparkConf().setAppName("ReadParquet")
    val sc = new SparkContext(conf)
    sc.addJar("/data/applications/spark-1.5.1-bin-hadoop2.6/lib/mysql-connector-java-5.1.37-bin.jar")
    sc.addJar("/data/applications/spark-1.5.1-bin-hadoop2.6/lib/memsql-connector_2.10-1.1.0.jar")
    Class.forName("com.mysql.jdbc.Driver")

    val host = "xxxx"
    val port = 3306
    val dbName = "WP1"
    val user = "root"
    val password = ""
    val tableName = "rt_acc"

    val memsqlContext = new com.memsql.spark.context.MemSQLContext(sc, host, port, user, password)

    val rt_acc = memsqlContext.read.parquet("tachyon://localhost:19998/rt_acc.parquet")
    val func_rt_acc = new com.memsql.spark.connector.DataFrameFunctions(rt_acc)
    func_rt_acc.saveToMemSQL(dbName, tableName, host, port, user, password)
    }
}

我相当肯定 Tachyon 不会导致问题,因为如果从磁盘加载也会发生相同的异常,我可以在数据帧上使用 sql 查询。 我见过有人建议 df.saveToMemSQL(..) 但是现在似乎这种方法在 DataFrameFunctions 中。

该表还不存在,但 saveToMemSQL 应该按照文档和源代码告诉我的那样创建 TABLE。

编辑:好吧,我想我误读了一些东西。 saveToMemSQL 不创建表。谢谢。

【问题讨论】:

    标签: scala jdbc apache-spark singlestore


    【解决方案1】:

    尝试使用createMemSQLTableAs 而不是saveToMemSQL
    saveToMemSQL 将数据框加载到现有表中,而createMemSQLTableAs 创建表然后加载它。 它还返回一个方便的数据框包装该 MemSQL 表:)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-14
      • 1970-01-01
      • 2018-11-30
      相关资源
      最近更新 更多