通过 JDBC 集成 Spark SQL 和 Apache Drill

2023-11-25

我想根据使用 Apache Drill 对 CSV 数据(在 HDFS 上)执行查询的结果创建 Spark SQL DataFrame。我成功配置了 Spark SQL,使其通过 JDBC 连接到 Drill:

Map<String, String> connectionOptions = new HashMap<String, String>();
connectionOptions.put("url", args[0]);
connectionOptions.put("dbtable", args[1]);
connectionOptions.put("driver", "org.apache.drill.jdbc.Driver");

DataFrame logs = sqlc.read().format("jdbc").options(connectionOptions).load();

Spark SQL 执行两个查询:第一个查询获取架构,第二个查询检索实际数据:

SELECT * FROM (SELECT * FROM dfs.output.`my_view`) WHERE 1=0

SELECT "field1","field2","field3" FROM (SELECT * FROM dfs.output.`my_view`)

第一个成功,但在第二个中,Spark 将字段括在双引号内,这是 Drill 不支持的,因此查询失败。

有人设法让这种集成发挥作用吗?

谢谢你!


您可以为此添加 JDBC Dialect 并在使用 jdbc 连接器之前注册该方言

case object DrillDialect extends JdbcDialect {

  def canHandle(url: String): Boolean = url.startsWith("jdbc:drill:")

  override def quoteIdentifier(colName: java.lang.String): java.lang.String = {
    return colName
  }

  def instance = this
}

JdbcDialects.registerDialect(DrillDialect)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 JDBC 集成 Spark SQL 和 Apache Drill 的相关文章

随机推荐

  • Swiftui [BUG] 导航视图和列表仅在 iPad 模拟器上不显示

    各种iPad模拟器上的空白页 前往Apple开发者网站下载以下教程项目 https developer apple com tutorials swiftui building lists and navigation 在任何 iPad 模
  • 在支持应用程序的模式下在 Mobile Safari 中使用 mailto: 链接时出错

    我在网页中有一个表单 其操作为 mailto email 其中电子邮件是真实的电子邮件地址 当我在 Mobile Safari 中以常规模式加载此页面时 即 不是在支持应用程序的模式下从主屏幕启动 效果很好 在我提交表单后 电子邮件应用程序
  • ASP.Net MVC 6 中的全局错误日志记录

    我正在测试 MVC 6 Web Api 并希望实现登录到全局错误处理程序 只是保证没有错误会在没有被记录的情况下离开系统 我创建了一个 ExceptionFilterAttribute 并将其全局添加到启动中 public class Ap
  • Angular2 http 重试逻辑

    我有一个带有基于令牌的身份验证机制的 API 成功登录后 我在浏览器的本地存储中存储两个令牌 访问令牌和刷新令牌 访问令牌包含在服务器端授权用户所需的所有必要信息 并且具有到期日期 当访问令牌过期时 客户端可以使用刷新令牌请求新的访问令牌
  • 如何使用新线程库中的 Task.Wait For Any?

    尝试使用Delphi中的线程库并行计算任务并使用TTask WaitForAny 为了得到第一个计算结果 偶尔会出现异常停止执行 异常时的调用堆栈 第一次机会例外 价格为 752D2F71 美元 异常类 EMonitorLockExcept
  • TextView 中的整数值

    如何在 TextView 中显示整数值 当我尝试时 出现错误android content res Resources NotFoundException String resource ID TextView tv new TextVie
  • 如何在Java 8中逐行读取文件?

    在Java 8中 我看到Files类中添加了名为lines 的新方法 该方法可用于在Java中逐行读取文件 它适用于大文件吗 我的意思是我们可以加载前 1000 行 然后加载第二组 1000 行吗 我有 1GB 的大文件 可以吗 有人可以分
  • 狮身人面像和“你的意思是……?”建议想法。它会起作用吗?

    我正在尝试想出最快的方法来提出搜索建议 起初我认为 Levenstein UDF 函数与 mysql 表相结合就可以完成这项工作 但是使用 levenshtein mysql 必须遍历表中的每一行 大量的单词 这会使查询非常慢 现在我最近安
  • 如何用等角透视进行渲染? [复制]

    这个问题在这里已经有答案了 可能的重复 使用opengl进行真正的等角投影 我想使用 Blender3d 使用的相同等距渲染进行渲染 我该怎么做 是否可以仅调用 glMultMatrix 我尝试谷歌搜索 但找不到任何可以导致这种渲染模式的工
  • Kotlin 中默认构造函数中的两个附加类型?

    自从我一直在使用kotlin 反射为了调用我的默认值和声明的构造函数 我看到了第二个不同的构造函数 我意识到两个不同的领域int arg3 and kotlin jvm internal DefaultConstructorMarker a
  • Visual Studio 2015 中的 TFS 生成资源管理器在哪里?

    我在 Windows 8 上运行 Visual Studio Enterprise 2015 RTM 在 Visual Studio 2013 中 构建资源管理器位于团队资源管理器 gt 构建 gt 操作 gt 管理队列中 Visual S
  • Typescript 泛型中对接口成员的约束

    我有一个方法 应该接受任何对象 只要它的所有字段都是字符串或数字 我做了这个 它非常适合鸭子打字 static interpolateParams route string params key string string number s
  • 一个很好的 C 随机数生成器

    我需要一个好的随机数生成器来用于我用 C 编写的程序 如果您感兴趣的话 它是一个分形火焰生成器 尽管我过去使用相同的算法取得了成功 但我的图像仍然非常粗糙 我最终意识到 区别在于我使用的随机数生成器 令人难以置信的是 它产生了巨大的变化 我
  • Linq 查询适用于 null 但不适用于 int?在 where 子句中

    我有一个像 简化的 的 linq 查询函数 public IList
  • Windows Phone 8.1 位置跟踪

    我想实现一个将设备位置持续发送到网络服务的应用程序 查看文档 我发现了 Geolocation 类和一些讨论位置跟踪的文章 如何持续跟踪 Windows Phone 8 手机的位置 如何在 Windows Phone 8 后台运行位置跟踪应
  • java中如何调整文本大小

    我发现在 Photoshop 中 只需拖动文本即可轻松调整文本大小 我们如何在 Java 中做同样的事情 关于如何在java中调整文本大小有什么想法吗 添加了在 Photoshop 中调整大小的字母 A 的快照 请让我知道这段代码有什么问题
  • 如何使用 XPath 获取属性的值

    我一直在使用 Selenium WebDriver 进行测试 并且一直在寻找 XPath 代码来获取 HTML 元素的属性值 作为回归测试的一部分 但我找不到一个好的答案 这是我的示例 html 元素 div class firstdiv
  • 如何实现android视频播放器全屏播放

    我已经实现了android视频播放器 但我不需要像这样我需要什么意思当我打开活动时我需要支付视频半屏在中心当我点击按钮全屏按钮然后我需要全屏支付 如何实现它帮助我 视频播放器活动 public class VideoPlayerActivi
  • 如何在intellij idea编辑器中删除顶行面包屑?

    我在弄清楚 IntelliJ Idea Community Edition 15 中的此显示栏时遇到问题 有谁知道这是什么和 或如何将其关闭 它被称为当前代码位置的面包屑菜单 例如 在您的图像中 您处于类 Display gt 方法 Dis
  • 通过 JDBC 集成 Spark SQL 和 Apache Drill

    我想根据使用 Apache Drill 对 CSV 数据 在 HDFS 上 执行查询的结果创建 Spark SQL DataFrame 我成功配置了 Spark SQL 使其通过 JDBC 连接到 Drill Map