Dataset<Row> ds = .....
ds = ds.select("cola", "colb");
ds.show();
DS已正确加载。 DS包含多个列。我要选择“可乐”和“ colb”专栏。这些列确实存在,否则上面的代码将引发错误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
当从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();