我有一个任务是读取csv文件并将csv文件加载到sql表但我不确定我的代码并面对“没有合适的驱动程序错误”并尝试使用新驱动程序。
export class MyDateAdapter extends NativeDateAdapter {
// change first day of the week to Monday(1)
getFirstDayOfWeek(): number {
return 1;
}
parse(value: any): Date | null {
// english format
if ((typeof value === 'string') && (value.indexOf('/') > -1)) {
const str = value.split('/');
if (str.length < 2 || isNaN(+str[0]) || isNaN(+str[1]) || isNaN(+str[2])) {
return null;
}
return new Date(Number(str[2]), Number(str[0]) - 1, Number(str[1]), 12);
}
// polish format
if ((typeof value === 'string') && (value.indexOf('.') > -1)) {
const str = value.split('.');
if (str.length < 2 || isNaN(+str[0]) || isNaN(+str[1]) || isNaN(+str[2])) {
return null;
}
return new Date(Number(str[2]), Number(str[1]) - 1, Number(str[0]), 12);
}
const timestamp = typeof value === 'number' ? value : Date.parse(value);
return isNaN(timestamp) ? null : new Date(timestamp);
}
}
任何帮助都非常感谢。
答案 0 :(得分:0)
您也可以在选项中添加相应的驱动程序,例如 .option(&#34; driver&#34;,&#34; org.postgresql.Driver&#34;) 要么 .option(&#34; driver&#34;,&#34; com.mysql.jdbc.Driver&#34;)
答案 1 :(得分:0)
我希望以下答案对您有所帮助,并尝试一下,以免出现任何错误
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.sbt 中
libraryDependencies += "com.databricks" % "spark-csv_2.10" % "0.1"
如果您的文件没有标题,那么您可以像下面这样提供标题
import sqlContext.implicits._
df.toDF("column_name_1","column_name_2",.....)
注意:列名称的数量必须与数据框中的列数相似,还有一点要注意,您需要将标题选项更改为false,如下所示
sparksession.read.format("com.databricks.spark.csv").option("header", "false").load(Path)