Skip to main content

故障排查:开启了Databricks的Table Access Controler之后,Python脚本无法访问外部的数据库了

分类:  故障排查 标签:  #Databricks #大数据 发布于: 2023-08-07 22:14:07

最近遇到一个案例:起初我们是想在Databricks里通过pyodbc访问访问外部的数据,这个简单,写一个脚本,然后把这个脚本放置到集群的初始化脚本里,安装必要的库就行了。脚本如下: #!/bin/sh curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list sudo apt-get update sudo ACCEPT_EULA=Y apt-get install msod

Read more

学习一个Spark内存的管理案例

分类:  Azure Databricks 标签:  #Azure #Databricks 发布于: 2023-06-18 19:56:24

在学习Databricks的内存管理时,我发现在stackoverflow上有一篇非常好的案例,我总结了一下这个案例并分享给大家。 用户场景 用户在本机写了一个Spark的应用。这个应用从本地读取14KB的文本文件,读入Spark之后,然后对这部分数据进行一定的转换操作,最后存储到数据库中。 使用的环境是: 8个Core,16G物理内存。 Java max heap size被设为了12G. 然后用户使用如下的命令提交任务到Spark本地执行:

Read more

Azure Databricks入门 - 概述

分类:  Azure Databricks 标签:  #Azure #入门 #Databricks 发布于: 2023-06-18 19:54:40

我开始学习Azure Databricks的时候遇到的最大困难是没有搞清楚Azure Databicks里面各种各样的名词和概念,这极大的阻碍了我学习该服务的热情和进度。认识到了这个问题之后,我调整了自己的方向,花了一些时间整理了Azure Databricks的基本结构,以及众多的工具和名词,后面再学习这个服务就感觉顺畅了很多,我将这个学习过程记录下来,就有了这个系列的入门文章了。 学习Azure Databricks的时候首先要明确的是Azure Databricks是为谁准备的平台?

Read more

再次深入Databricks内存管理

分类:  Azure Databricks 标签:  #Azure #Databricks 发布于: 2023-06-18 19:52:08

我们之前有一篇文章就用户的案例提及了Databricks的内存管理,我们本章计划再次深入学习一下内存管理。虽然Databricks是基于Spark开发的平台,但是Databricks的部署和用户自己搭建的Spark集群在配置上还是有不一样的地方。 谁在管理内存 所有的Spark应用都是运行在JVM的进程内的,对于JVM来说,它主要是通过GC来管理内存,而GC对于Spark的内存使用模式是一无所知的,也就是说Spark需要自己管理内存。相对于GC, Spark管理的内存其模式相对固定,它管理的内存主要是被分成两大块,Execute Memory和Storage Memory, 同时Spark应用运行时还有一块内存称为保留内存,需要注意的是这块内存并不是由Spark来管理的,而是由JVM

Read more

使用Azure Databricks通过JDBC读入大量数据异常处理(三)理解Databricks中的内存配置

分类:  Azure Databricks 标签:  #Azure #Databricks 发布于: 2023-06-18 19:46:44

在阅读这篇文章之前需要了解用户问题背景,您可以通过如下链接了解到: 我们之前一篇文章学习通过调整JDBC源配置提高并行度来缓解客户的问题,这是个比较好的解决方案,也是我们和Databricks的团队仔细讨论过的方案,是比较稳妥的做法。为了更好的理解客户的问题发生原因,我们还可以从Databricks的内存管理上入手,来讨论和学习如何从内存上缓解类似的问题。 Databricks是基于Spark的云平台,因此在架构上、内存管理上和传统的Spark会有区别,不过组件结构也是由driver和executor组成的,drvier和executor的分工也很明确: driver的主要负责: 创建SparkContext和SparkSession, 并运行用户代码中的main()

Read more

使用Azure Databricks通过JDBC读入大量数据异常处理(二)优化JDBC源配置

分类:  Azure Databricks 标签:  #Azure #Databricks 发布于: 2023-06-18 19:43:36

我们之前的文章介绍了这个用户案例的背景,要学习本章需要认真了解一下背景,您可以通过如下的链接访问:<> 上篇结束时我们谈到过有两个解决方案可以缓解这个问题: 优化客户导入数据的代码,使用JDBC数据源的配置项提升数据导入的并行度,避免发生Out Of Memory这样的问题。 优化集群的配置,调整Spark运行过程中使用到内存环境, 避免发生Out OF Memory的问题。 我们本节来学习和讨论方案一,优化JDBC源配置。 我们可以使用如下的方式来缓解: 优化pushdown query限制数据集,分批次导入数据集。 根据JDBC数据源的配置选项,优化并行配置。 根据JDBC数据源配置选项,配置fetchsize, 优化导入效率。 我们现在来学习这三个方案

Read more

使用Azure Databricks通过JDBC读入大量数据异常处理(一)问题介绍

分类:  Azure Databricks 标签:  #Azure #Databricks #Spark 发布于: 2023-06-18 19:40:13

近期遇到一个非常典型的用户案例: 用户使用Azure Databricks通过JDBC数据源向Delta Table输入大量的数据,在运行了两个半小时之后报错,数据导入失败,并且报了两种异常: 异常1: 异常2 用户使用的的数据源是Azure Database for mysql, 需要导入的表数据行数330万行,数据大小在44个G左右。仔细检查了客户的notebook, 客户的语句其实非常简单:

Read more

Azure Databricks Job/notebook运行卡住三板斧 之三 自动抓取Dump

分类:  Azure Databricks 标签:  #Azure #Databricks 发布于: 2023-06-15 21:34:01

我们之前讨论过了如何快速的缓解Job/Notebook卡住的问题,也分享给大家了如何通过Spark UI来查看thread dump, 我们今天分享给大家我们的第三板斧:通过配置让Cluster自动抓取ThreadDump, 关于之前的文章,请参考链接: 配置集群自动抓取ThreadDump 请使用如下的步骤来配置集群当有长时间运行或者卡住的Job/notebook自动抓取Thread Dump: 登录到workspace, 选择你的cluster:

Read more