我在使用Spark通过自定义JDBC读取数据时遇到了一个问题。我如何重写通过jdbcurl推断的sql方言?
有问题的数据库是vitess(https://github.com/youtube/vitess ),它运行一个mysql变体,所以我想指定一种mysql方言。jdbc url以jdbc:vitess/开头
否则,数据帧读取器将推断出使用“”作为引号标识符的默认方言。因此,通过 spark.read.jdbc 的查询将作为
从表中选择“id”、“col2”、“列3”、“等”
它选择字符串表示形式而不是列值,而不是
从表中选择id、列2、列3等
你可以做这样的事情。
val jdbcDF = spark.read
.format("jdbc")
.option("url", "jdbc:postgresql:dbserver")
.option("dbtable", "schema.tablename")
.option("user", "username")
.option("password", "password")
.load()
有关更多信息,请查看此选项
也可以这样指定。
val connectionProperties = new Properties()
connectionProperties.put("user", "username")
connectionProperties.put("password", "password")
val jdbcDF2 = spark.read
.jdbc("jdbc:postgresql:dbserver", "schema.tablename", connectionProperties)
也许已经太迟了。但接下来会有答案:
创建您的自定义方言,就像我对ClickHouse数据库所做的那样(我的jdbc连接url看起来像这样jdbc:clickhouse://localhost:8123)
private object ClickHouseDialect extends JdbcDialect {
//override here quoting logic as you wish
override def quoteIdentifier(colName: String): String = colName
override def canHandle(url: String): Boolean = url.startsWith("jdbc:clickhouse")
}
并将其注册到您的代码中的某个位置,如下所示:
JdbcDialects.registerDialect(ClickHouseDialect)
我正在尝试使用Apache Spark,以便将具有多个连接和子选择的(大型)SQL查询的结果加载到来自Spark的DataFrame中,如从SQL查询创建Spark Dataframe中所述。 不幸的是,我这样做的尝试导致了拼花错误: 线程“main”组织中出现异常。阿帕奇。火花sql。AnalysisException:无法推断拼花地板的架构。必须手动指定。 我从谷歌看到的信息表明,当数据帧为空
我确信这是一个简单的SQLContext问题,但我在Spark docs或Stackoverflow中找不到任何答案 我想从MySQL上的SQL查询创建一个Spark数据框 例如,我有一个复杂的MySQL查询,如 我想要一个带有X、Y和Z列的数据帧 我想出了如何将整个表加载到Spark中,然后可以将它们全部加载,然后在那里进行连接和选择。然而,这是非常低效的。我只想加载SQL查询生成的表。 这是我
在一个字符串中传递路径、用户名、密码和所有选项可以方便地创建到数据库的连接。有没有办法从一个URL创建数据源对象?也许可以从开放的SQL连接创建数据源?
我正在研究建立一个JDBC Spark连接,以便从r/Python使用。我知道和都是可用的,但它们似乎更适合交互式分析,特别是因为它们为用户保留了集群资源。我在考虑一些更类似于Tableau ODBC Spark connection的东西--一些更轻量级的东西(据我所知),用于支持简单的随机访问。虽然这似乎是可能的,而且有一些文档,但(对我来说)JDBC驱动程序的需求是什么并不清楚。 既然Hiv
在spark streaming中,流数据将由在worker上运行的接收器接收。数据将被周期性地推入数据块中,接收者将向驱动程序发送receivedBlockInfo。我想知道这会引发流将块分发到集群吗?(换句话说,它会使用分发存储策略吗)。如果它不在集群中分发数据,如何保证工作负载平衡?(我们有一个10s节点的集群,但只有几个接收器)
在PySpark中或者至少在Scala中,Apache Spark中是否有与Pandas Melt函数等价的函数? 到目前为止,我一直在用Python运行一个示例数据集,现在我想对整个数据集使用Spark。