将大型csv加载到RDB的推荐方法,如mysql

时间:2016-01-18 07:29:16

标签: mysql apache-spark etl parquet spark-dataframe

目标:构建一个小型ETL框架以获取巨大的CSV并将其转储到RDB(比如MySQL)。

我们正在考虑的当前方法是使用spark将csv加载到数据帧中并保留它,然后使用apache scoop等框架并将其加载到mySQL中。

需要建议保持哪种格式以及方法本身。

编辑: CSV将有大约5000万行,50-100列。 由于我们的任务在转储到RDB之前涉及大量转换,我们认为使用spark是一个好主意。

1 个答案:

答案 0 :(得分:0)

Spark SQL支持直接写入RDB。您可以将巨大的CSV加载为DataFrame,对其进行转换,然后在API下面调用以将其保存到数据库中。 请参阅以下API:

org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils
def saveTable(df: DataFrame,
              url: String,
              table: String,
              properties: Properties): Unit
Saves the RDD to the database in a single transaction.

示例代码:

val url: String = "jdbc:oracle:thin:@your_domain:1521/dbname"
val driver: String = "oracle.jdbc.OracleDriver"
val props = new java.util.Properties()
props.setProperty("user", "username")
props.setProperty("password", "userpassword")
org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils.saveTable(dataFrame, url, "table_name", props)