在加载之前,我需要从 delta-lake 表中删除某些数据。我可以从增量表中删除数据(如果存在),但当表不存在时会失败。
下面的 Databricks scala 代码
// create delete statement
val del_ID = "Check_ID =" + "123"
// get delta table from path where data exists
val deltaTable = DeltaTable.forPath(spark, path)
// delete data from delta table
deltaTable.delete(del_ID)
Run Code Online (Sandbox Code Playgroud)
仅当该路径上存在增量数据时,上述代码才有效,否则将失败。
有人可以分享一种方法,如果增量数据存在,则执行删除语句,否则删除语句将被忽略?
当我尝试运行下面定义的 azure 函数时,我收到以下错误日志
The 'my_function' function is in error: The binding name my_function_timer is invalid. Please assign a valid name to the binding.
Run Code Online (Sandbox Code Playgroud)
Azure Function 的有效绑定名称的格式是什么?
我的目录中有两个文件my_function
:
__init__.py
包含函数的Python代码function.json
包含功能的配置这是这两个文件的内容
__init__.py
The 'my_function' function is in error: The binding name my_function_timer is invalid. Please assign a valid name to the binding.
Run Code Online (Sandbox Code Playgroud)
function.json
import azure.functions as func
import logging
def main(my_function_timer: func.TimerRequest) -> None:
logging.info("My function starts")
print("hello world")
logging.info("My function stops")
Run Code Online (Sandbox Code Playgroud)
我使用Azure/functions-action@v1 github 操作部署此函数
Spark 版本:3.2.0 Java 版本:8 Python 版本:3.7.3 Scala:sbt-1.5.5.msi
我按照此链接执行了所有步骤:https://phoenixnap.com/kb/install-spark-on-windows-10
当我通过cmd运行spark-shell命令时,它抛出以下错误:
C:\spark-3.2.0-bin-hadoop3.2\bin>spark-shell
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
21/11/11 00:14:24 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
21/11/11 00:14:26 ERROR SparkContext: Error initializing SparkContext.
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.apache.spark.executor.Executor.addReplClassLoaderIfNeeded(Executor.scala:909)
at org.apache.spark.executor.Executor.<init>(Executor.scala:160)
at org.apache.spark.scheduler.local.LocalEndpoint.<init>(LocalSchedulerBackend.scala:64)
at org.apache.spark.scheduler.local.LocalSchedulerBackend.start(LocalSchedulerBackend.scala:132)
at org.apache.spark.scheduler.TaskSchedulerImpl.start(TaskSchedulerImpl.scala:220) …
Run Code Online (Sandbox Code Playgroud) 我正在尝试生成一个日期序列
from pyspark.sql import functions as F
df1 = df.withColumn("start_dt", F.to_date(F.col("start_date"), "yyyy-mm-dd")) \
.withColumn("end_dt", F.to_date(F.col("end_date"), "yyyy-mm-dd"))
df1.select("start_dt", "end_dt").show()
print("type(start_dt)", type("start_dt"))
print("type(end_dt)", type("end_dt"))
df2 = df1.withColumn("lineoffdate", F.expr("""sequence(start_dt,end_dt,1)"""))
Run Code Online (Sandbox Code Playgroud)
+---------------+----------+
| start_date | end_date|
+---------------+----------+
| 2020-02-01|2020-03-21|
+---------------+----------+
type(start_dt) <class 'str'>
type(end_dt) <class 'str'>
Run Code Online (Sandbox Code Playgroud)
由于数据类型不匹配,无法解析 'sequence( start_dt
, , 1)':序列仅支持整数、时间戳或日期类型;end_dt
第 1 行位置 0;
即使将开始 dt 和结束 dt 转换为日期或时间戳之后,我看到列的类型仍然是 str 并在生成日期序列时出现上述错误。
如果我有一个日期格式为 MM/DD/YYYY 的表格,如下所示。
+---+-----------+----------+
| id| startdate| enddate|
+---+-----------+----------+
| 1| 01/01/2022|01/31/2022|
| 1| 02/01/2022|02/28/2022|
| 1| 03/01/2022|03/31/2022|
| 2| 01/01/2022|03/01/2022|
| 2| 03/05/2022|03/31/2022|
| 2| 04/01/2022|04/05/2022|
+---+-----------+----------+
Run Code Online (Sandbox Code Playgroud)
如何根据 id 列进行分组以及开始日期和结束日期是否连续?
一件事是,如果间隔超过一天,则将该行保留在新行上,这样上表将变为:
+---+-----------+----------+
| id| startdate| enddate|
+---+-----------+----------+
| 1| 01/01/2022|31/03/2022|
| 2| 01/01/2022|03/01/2022|
| 2| 03/05/2022|04/05/2022|
+---+-----------+----------+
Run Code Online (Sandbox Code Playgroud)
id = 1 成为一行,因为 id =1 的所有日期都是连续的,即没有间隙 > 1,但 id 2 有两行,因为 03/01/2022 和 03/05/2022 之间有间隙。
我想在某些页面中隐藏页脚组件
<div className="App">
<Header setShowMenu={setShowMenu} />
{showMenu ? <Menu navigateTo={navigateTo} setShowMenu={setShowMenu} /> : null}
<Main navigateTo={navigateTo} />
<Footer navigateTo={navigateTo} />
</div>
Run Code Online (Sandbox Code Playgroud)
<div>
<Routes>
<Route path="/" element={<HomePage navigateTo={navigateTo} />} />
<Route path="/precard" element={<PreCard />} />
<Route path="/order" element={<Order />} />
<Route path="/contact" element={<Contact />} />
<Route path="/thankspage" element={<ThanksPage navigateTo={navigateTo}/>} />
<Route path="/*" element={<HomePage />} />
</Routes>
</div>
Run Code Online (Sandbox Code Playgroud)
注意:index.js 中的 Router
所以我想隐藏./order
页面中的页脚
我希望你们能为我找到解决方案:)
apache-spark ×2
pyspark ×2
python ×2
aws-glue ×1
azure ×1
components ×1
databricks ×1
dataframe ×1
date ×1
delta-lake ×1
javascript ×1
pandas ×1
react-hooks ×1
react-router ×1
reactjs ×1
scala ×1
sequence ×1