为什么数据帧显示()在PyCharm中断我的程序,但不是在终点站

2024-10-06 08:49:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着运行一个简单的pyspark示例,我自己为学习目的编写了这个示例:

from pyspark import SQLContext
from pyspark import SparkContext
from pyspark.sql.types import StringType
from pyspark.sql.functions import udf

from urllib.parse import urlsplit

def extractPath(host, url):
    if host in url:
        return urlsplit(url).path
    else:
        return '-'


sc = SparkContext.getOrCreate()

sqlContext = SQLContext(sc)

# preconstruct custom spark functions, used in method processFile
getPathUdf = udf(extractPath, StringType())

df = sqlContext.read.csv(
    path="resources/smalldatafile.csv",
    header=True,
    inferSchema=True
)

previousPagePathField = 'previous page path'
hostnameField = 'host name'
dataCsRefererField = 'data_cs_referer'

# do mappings
dfMapped = (
    df
        .withColumnRenamed('data_cs_host', hostnameField)
)

# split referrer url
print(previousPagePathField)
print(hostnameField)
print(dataCsRefererField)
print(getPathUdf(hostnameField, dataCsRefererField))
dfRefUrl = dfMapped.withColumn(previousPagePathField, getPathUdf(hostnameField, dataCsRefererField))
dfRefUrl.show(1)

最后一行用跟踪使我的程序崩溃:

^{pr2}$

show(1)更改为show()会导致相同的崩溃。我在python3.6上使用pyspark 2.4.0。我的javahome设置为/usr/lib/jvm/java-8-openjdk-amd64。此外,在终端中运行程序不会导致崩溃。所以我认为这与某种PyCharm配置有关,这就是我所使用的IDE。在


Tags: pathfromimporthosturl示例showpyspark
1条回答
网友
1楼 · 发布于 2024-10-06 08:49:17

TLDR;PyCharm存在指向正确JDK的问题

我今天也有同样的问题。我只是通过将PyCharm中的runtime configs中的JAVA_HOME变量设置为Java8SE安装的主目录来解决这个问题。在我的例子中,JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_92.jdk/Contents/home

My JAVA_HOME is set to /usr/lib/jvm/java-8-openjdk-amd64

这是指您实际的环境变量JAVA_HOME(即,当您向终端键入echo $JAVA_HOME时得到的结果)还是在PyCharm上的运行时配置中设置的环境变量?因为PyCharm只知道后者,因为JAVA_HOME不是系统范围的变量。在

相关问题 更多 >