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



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

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

需要就坚持哪种格式和方法本身提出建议。

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

Spark SQL支持直接写入RDB。 您可以将庞大的CSV加载为数据帧,对其进行转换,然后调用下面的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)

相关内容

  • 没有找到相关文章

最新更新