Dataset<Row> ds = .....
ds = ds.select("cola", "colb");
ds.show();
DS已正确加载。 DS包含多个列。我要选择“可乐”和“可乐”专栏。这些列确实存在,否则上面的代码将引发错误Caused by: org.apache.spark.sql.AnalysisException: cannot resolve colA given input columns
。我的问题是它将值替换为列名。如何保留原始值?
expected
cola | colb
1 2
3 4
我得到的东西
cola | colb
cola colb
cola colb
答案 0 :(得分:0)
从DB将数据加载到dataSet中时,请不要信任已正确加载数据,直到您看到实际的数据为止。
在这种情况下,我可以看到ds.printSchema
和ds.count().show()
,但是当我执行ds.select("cola", "colb")
时却没有显示正确的数据。
现在有一些调查表明,从memSql加载时我不应该使用JDBC
我一直在关注错了。它可以加载架构,但不能加载实际数据。
Dataset<Row> ds= spark.read()
.format("jdbc")
.option("user", getDbUser(true))
.option("password", getDbPass(true))
.option("url", h2RawPositions)
.option("dbtable", h2PositionTableName)
.load();
相反,我使用了com.memsql.spark.connector(Source)。
Dataset<Row> gsProducts = spark.read()
.format("com.memsql.spark.connector")
.option("url", memsqlConnection)
.option("dbtable", mamsqlTableName)
.option("query", "select blah, blah frm memSqlTableName")
.load();