我正在尝试读取以 UTF-16 编码的 CSV 文件。
val test = spark.read
.format("com.databricks.spark.csv")
.option("header", "true")
.option("inferSchema", "true")
.option("delimiter",";")
.option("dateFormat", "yyyy-MM-dd HH:mm:ss.SSS")
.option("encoding", "UTF-16")
.option("charset", "ISO-8859-1")
.load("...")
Run Code Online (Sandbox Code Playgroud)
结果我得到了额外的行:
Spark 是否可能只能使用 UTF-8 编码?或者还有其他方法可以将 UTF-16 CSV 读入数据帧?
scala apache-spark apache-spark-sql spark-dataframe databricks
我写这篇文章不是为了问问题,而是分享知识。我正在使用 Spark 连接到雪花。但我无法访问雪花。数据块中的内部 JDBC 驱动程序似乎有问题。
这是我得到的错误。
java.lang.NoClassDefFoundError:net/snowflake/client/jdbc/internal/snowflake/common/core/S3FileEncryptionMaterial
Run Code Online (Sandbox Code Playgroud)
我尝试了许多版本的雪花 jdbc 驱动程序和雪花驱动程序。好像我可以匹配到正确的。
apache-spark apache-spark-sql snowflake-cloud-data-platform databricks
该行:
df.withColumn("test", expr("concat(lon, lat)"))
Run Code Online (Sandbox Code Playgroud)
可以正常工作,但是
df.withColumn("test", expr("concat(lon, lit(','), lat)"))
Run Code Online (Sandbox Code Playgroud)
产生以下异常:
org.apache.spark.sql.AnalysisException:未定义的函数:'lit'。该功能既不是注册的临时功能,也不是在数据库“默认”中注册的永久功能。org.apache.spark.sql.catalyst.analysis.Analyzer $ LookupFunctions $$ anonfun $ apply $ 15 $ anonfun $ applyOrElse $ 49.apply(Analyzer.scala:1198)的第1行pos 12
为什么?解决方法是什么?
我在Databricks笔记本中编写了以下代码
name = input("Please enter your name: ")
age = input("How old are you, {0}?".format(name))
print(age)
Run Code Online (Sandbox Code Playgroud)
正如您所猜测的,运行单元格后,系统会要求我“请输入您的姓名:”问题是我不知道在哪里输入。如果这是用 intelliJ IDEA 或 IDLE 编写的,我将获得一个单独的窗口来输入我的名字。但是,使用 Databricks 笔记本,即使我在不同的单元格中输入答案,它似乎也在不断等待输入,请参见图像:
我真的应该知道这个问题的答案
我正在尝试使用以下配置在 dattabricks 中安装 adls gen2
configs = {"fs.azure.account.auth.type": "OAuth",
"fs.azure.account.oauth.provider.type": "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider",
"fs.azure.account.oauth2.client.id": "service principal id",
"fs.azure.account.oauth2.client.secret": "service principal key",
"fs.azure.account.oauth2.client.endpoint": "https://login.microsoftonline.com/tenant-id/oauth2/token",
"fs.azure.createRemoteFileSystemDuringInitialization": "true"}
dbutils.fs.mount(
source = "abfss://file-system@storage-account.dfs.core.windows.net/directory",
mount_point = "/mnt/data",
extra_configs = configs)
Run Code Online (Sandbox Code Playgroud)
我已创建服务主体并为其创建密钥,然后在 Active Directory 角色分配中向该服务主体提供存储 Blob 角色
根据文件
"abfss://<your-file-system-name>@<your-storage-account-name>.dfs.core.windows.net/<your-directory-name>"
Run Code Online (Sandbox Code Playgroud)
blob 容器内的 your-file-system ==> 文件夹应该是什么?you-directory-name ==> 我在 Blob 容器内只有一个文件夹,所以这里很混乱 storgae(ADLS gen 2 Preview) Blob 容器文件夹 a.txt
错误
ExecutionError:调用 o480.mount 时发生错误。HEAD https://xxxxxxxxx.dfs.core.windows.net/xxxxxx?resource=filesystem&timeout=90 StatusCode=403 StatusDescription=此请求无权使用此权限执行此操作。ErrorCode=ErrorMessage=在shaded.databricks.v20180920_b33d810.org.apache.hadoop.fs.azurebfs.services.AbfsRestOperation.execute(AbfsRestOperation.java:134)在shaded.databricks.v20180920_b33d810.org.apache.hadoop.fs.azurebfs。 services.AbfsClient.getFilesystemProperties(AbfsClient.java:197)位于shaded.databricks.v20180920_b33d810.org.apache.hadoop.fs.azurebfs.AzureBlobFileSystemStore.getFilesystemProperties(AzureBlobFileSystemStore.java:214)位于shaded.databricks.v20180920_b33d810。 org.apache. hadoop.fs.azurebfs.AzureBlobFileSystem.fileSystemExists(AzureBlobFileSystem.java:749)位于shaded.databricks.v20180920_b33d810.org.apache.hadoop.fs.azurebfs.AzureBlobFileSystem.initialize(AzureBlobFileSystem.java:110)位于com.databricks.backend。 daemon.dbutils.DBUtilsCore.verifyAzureFileSystem(DBUtilsCore.scala:485) 在 com.databricks.backend.daemon.dbutils.DBUtilsCore.mount(DBUtilsCore.scala:435) 在 sun.reflect.GenerateMethodAccessor400.invoke(未知来源) 在太阳。 Reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:498) 在 py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:244) 在 py4j.reflection.ReflectionEngine …
我想使用我最喜欢的编辑器在本地编辑 Databricks 笔记本,然后使用Databricks Connect在我通常通过 Web 界面访问的 Databricks 集群上远程运行笔记本。
不幸的是,在网上搜索了几天后,我找不到有关 Databricks Connect 的详细文档。
我databricks-connect configure按照上面 PyPI 页面上的建议运行 ,但我不确定某些设置是什么。有人可以引导我完成这个过程(比如在网络界面中哪里可以找到这些值)或提供正确文档的链接吗?
databricks-connect configure我知道一些设置应该是什么,但为了完整性和其他人的利益,我将包括运行时出现的所有内容。
Databricks Host
Databricks Token
Cluster ID(例如,0921-001415-jelly628)
Org ID(仅限 Azure,请参阅?o=orgIdURL)
Port(是吗spark.databricks.service.port?)
另外,我认为这是我最感兴趣的,我是否需要对笔记本本身进行任何更改,例如定义 SparkContext 或其他内容?如果有的话,用什么配置?
我应该如何运行它?运行后databricks-connect configure,似乎没有发生任何“魔法”。当我运行时jupyter notebook,它仍然在本地运行,并且似乎不知道将其转发到远程集群。
更新:
如果您想考虑更具体的东西,在 Databricks 的 Web 界面中,dbutils是一个预定义的对象。远程运行笔记本时如何引用它?
我想使用 IntelliJ IDEA 直接在集群中运行 Spark 进程,因此我遵循下一个文档https://docs.azuredatabricks.net/user-guide/dev-tools/db-connect.html
配置完所有内容后,我运行databricks-connect test但没有获得文档所述的 Scala REPL。
这是我的集群配置
我想在 Databricks 上使用 Dask。这应该是可能的(我不明白为什么不可以)。如果我导入它,会发生两种情况之一,要么我得到一个ImportError,但是当我安装distributed来解决这个问题时,DataBricks 只是说Cancelled没有抛出任何错误。
我想在 where 子句中使用带有两个变量的 WHERE 语句。我对此进行了研究,了解如何在 Databricks 中的 SQL 语句中使用变量以及使用 Python 插入变量,但不起作用。我尝试实施所提供的解决方案,但它不起作用。
a= 17091990
b = 30091990
df = spark.sql(' SELECT * FROM table WHERE date between "a" AND "b" ')
Run Code Online (Sandbox Code Playgroud)