小编mun*_*nro的帖子

PySpark: org.apache.spark.sql.AnalysisException: 属性名称 ... 在 " ,;{}()\n\t=" 中包含无效字符。请使用别名重命名

我正在尝试将 Parquet 数据加载到 中PySpark,其中列的名称中有一个空格:

df = spark.read.parquet('my_parquet_dump')
df.select(df['Foo Bar'].alias('foobar'))
Run Code Online (Sandbox Code Playgroud)

尽管我已经别名列,我还是从收到此错误和错误传播JVM的一侧PySpark。我在下面附上了堆栈跟踪。

有没有办法可以将这个镶木地板文件加载到PySpark.

---------------------------------------------------------------------------
Py4JJavaError                             Traceback (most recent call last)
/usr/local/python/pyspark/sql/utils.py in deco(*a, **kw)
     62         try:
---> 63             return f(*a, **kw)
     64         except py4j.protocol.Py4JJavaError as e:

/usr/local/python/lib/py4j-0.10.4-src.zip/py4j/protocol.py in get_return_value(answer, gateway_client, target_id, name)
    318                     "An error occurred while calling {0}{1}{2}.\n".
--> 319                     format(target_id, ".", name), value)
    320             else:

Py4JJavaError: An error occurred while calling o864.collectToPython.
: org.apache.spark.sql.AnalysisException: Attribute name "Foo Bar" contains invalid character(s) among …
Run Code Online (Sandbox Code Playgroud)

python apache-spark parquet pyspark spark-dataframe

9
推荐指数
1
解决办法
3万
查看次数

Bash复杂的管道依赖性

我正在尝试在单个Bash脚本中对构建并发管道进行建模。我知道我可以使用其他工具,但是出于理解Bash的目的,我正在这样做。 这是我要在Bash中建模的任务流图。

并行调度作业很容易,而在最后等待所有作业很容易。但是我想通过在任务A.1和任务X之后立即触发任务A.2来使其运行更快。为了使自己更难对付,任务A.1和任务A.2中的代码是相关且顺序的,因此如果我还可以保持代码顺序的话,那就太好了。

#!/usr/bin/bash

{
    echo "Task X"
} &
DEPENDENCY=$!

{
    echo "Task A.1"
    wait "${DEPENDENCY}"
    echo "Task A.2"
} &

{
    echo "Task B.1"
    wait "${DEPENDENCY}"
    echo "Task B.2"
} &

wait
Run Code Online (Sandbox Code Playgroud)

理想情况下,这是我想要的,但是它不起作用,因为子进程不能互相等待-这很有意义-但我希望我可以跨平台的方式完成这项工作。

我实际上已经在工作,但是我无法保留* .1和* .2部分的代码

如果这可以在OSX和Linux上运行,那也很好。我希望Bash专家能够参与进来,并展示一种简洁的方式来用Bash表达这一点。

linux parallel-processing bash concurrency pipeline

3
推荐指数
2
解决办法
108
查看次数