使用scala在sql表中加载csv文件
Posted
技术标签:
【中文标题】使用scala在sql表中加载csv文件【英文标题】:load csv file in sql table using scala 【发布时间】:2017-08-07 11:03:31 【问题描述】:我的任务是读取 csv 文件并将 csv 文件加载到 sql 表,但我不确定我的代码并面临“没有合适的驱动程序错误”并尝试使用新驱动程序。
val DBURL= "jdbc:sqlserver://servername:port;DatabaseName=DBname"
val srcfile=spark.read.text("filename")
val test =srcfile.write.format("jdbc")
.option("url", DBURL)
.option("dbtable", "tablename")
.option("user", "username")
.option("password", "password")
.save()
非常感谢任何帮助。
【问题讨论】:
您是否在内置管理器(如 maven 或 sbt)中包含依赖项? 我们没有使用 maven 和 sbt。只是我们必须从 hdfs 读取文件并将其插入到 sql 表中 你下载了jdbc连接器了吗? 是的,这个可能是最新的 jar"mysql-connector-java-5.0.8-bin.jar" 使用这个我可以连接表但无法加载 csv 文件。 【参考方案1】:您也可以在选项中添加相应的驱动程序,例如 .option ("驱动程序","org.postgresql.Driver") 或者 .option("driver", "com.mysql.jdbc.Driver")
【讨论】:
请参考之前的帖子,***.com/questions/29552799/…【参考方案2】:我希望下面的答案对你有帮助,并且已经尝试过了,所以它不能有任何错误
def main(args: Array[String]): Unit =
val conf = new SparkConf().setAppName("Testing Transpose").setMaster("local[*]").set("spark.sql.crossJoin.enabled","true")
val sc = new SparkContext(conf)
val sparksession = SparkSession.builder().config("spark.sql.warehouse.dir","file:///c://tmp/spark-warehouse").getOrCreate()
val sqlContext = new SQLContext(sc)
import sqlContext.implicits._
val df = sparksession.read.format("com.databricks.spark.csv").option("header", "true").load(Path)
val prop : java.util.Properties = new Properties()
prop.setProperty("user","(temp_User)")
prop.setProperty("password","(temp_password)")
df
.write
.option("driver","com.microsoft.sqlserver.jdbc.SQLServerDriver")
.mode("append")
.jdbc("jdbc:sqlserver://(database_ip):(database_port_to_access)","(table_name)",prop)
sparksession.stop()
如果您想使用 databricks.csv,请包含此依赖项,否则您可以替换它val df = sparkSession.read.option("header","true").csv("src/main/resources/sales.csv")
这需要包含在 build.sbtlibraryDependencies += "com.databricks" % "spark-csv_2.10" % "0.1"
如果您的文件没有标题,那么您可以提供如下标题
import sqlContext.implicits._
df.toDF("column_name_1","column_name_2",.....)
注意:列名的数量必须与数据框中的列数相似,还有一点需要注意,您需要将 header 选项更改为 false,如下所示
sparksession.read.format("com.databricks.spark.csv").option("header", "false").load(Path)
【讨论】:
但我的数据文件没有标题。没有标题显示无效列名等错误 我在答案末尾添加了一些注释/cmets,请仔细阅读,您可能会解决您的问题。如果需要,请随时 ping 请告知它是否帮助您以上是关于使用scala在sql表中加载csv文件的主要内容,如果未能解决你的问题,请参考以下文章