在 Spark 中将 DataFrame 写入 MemSQL Table
Writing DataFrame to MemSQL Table in Spark
我正在尝试使用 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-queries。
我见过有人建议 df.saveToMemSQL(..) 但是现在这个方法似乎在 DataFrameFunctions 中。
table 还不存在,但 saveToMemSQL 应该按照文档和源代码告诉我的那样创建 TABLE。
编辑:好的,我想我误读了什么。 saveToMemSQL 不会创建 table。谢谢
尝试使用 createMemSQLTableAs
而不是 saveToMemSQL
。
saveToMemSQL
将数据帧加载到现有的 table 中,而 createMemSQLTableAs
创建 table 然后加载它。
它还 returns 一个方便的数据框包装 MemSQL table :).
我正在尝试使用 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-queries。 我见过有人建议 df.saveToMemSQL(..) 但是现在这个方法似乎在 DataFrameFunctions 中。
table 还不存在,但 saveToMemSQL 应该按照文档和源代码告诉我的那样创建 TABLE。
编辑:好的,我想我误读了什么。 saveToMemSQL 不会创建 table。谢谢
尝试使用 createMemSQLTableAs
而不是 saveToMemSQL
。
saveToMemSQL
将数据帧加载到现有的 table 中,而 createMemSQLTableAs
创建 table 然后加载它。
它还 returns 一个方便的数据框包装 MemSQL table :).