小编Kau*_*hik的帖子

Pyspark 错误:“Py4JJavaError:调用 o655.count 时发生错误。” 在数据帧上调用 count() 方法时

我是 Spark 的新手,我正在使用 Pyspark 2.3.1 将 csv 文件读入数据帧。我能够在 anaconda 环境中运行的 Jupyter 笔记本中读取文件并打印值。这是我正在使用的代码:

# Start session
spark = SparkSession \
.builder \
.appName("Embedding Models") \
.config('spark.ui.showConsoleProgress', 'true') \
.config("spark.master", "local[2]") \
.getOrCreate()

sqlContext = sql.SQLContext(spark)
schema = StructType([
         StructField("Index", IntegerType(), True),
         StructField("title", StringType(), True),
         StructField("body", StringType(), True)])

df= sqlContext.read.csv("../data/faq_data.csv",
                         header=True, 
                         mode="DROPMALFORMED",
                         schema=schema)
Run Code Online (Sandbox Code Playgroud)

输出:

df.show()

+-----+--------------------+--------------------+
|Index|               title|                body|
+-----+--------------------+--------------------+
|    0|What does “quantu...|Quantum theory is...|
|    1|What is a quantum...|A quantum compute...|
Run Code Online (Sandbox Code Playgroud)

但是,当我.count()在数据帧上调用该方法时,它会引发以下错误

    ---------------------------------------------------------------------------
Py4JJavaError                             Traceback (most recent call …
Run Code Online (Sandbox Code Playgroud)

python dataframe pyspark

9
推荐指数
2
解决办法
5万
查看次数

正则表达式匹配两个连续的字符,除非后面跟着/前面有更多相同的字符

我有一个看起来像这样的字符串:qqq Eqq Eqqq Cqq Eqq Fq.我想用一个替换所有有两个连续字符的序列(在这种情况下qq),h所需的输出如下所示:qqq Eh Eqqq Ch Eh Fq

但是,我不希望正则表达式匹配超过两个q(qqqqqqq)的序列,并使字符串看起来像这样:hq Eh Ehq Ch Eh Fq.我已经尝试了以下但是这导致了我不想要的输出.

text = "qqq Eqq Eqqq Cqq Eqq Fq";
text = text.replaceAll("[q]{2}", "h");
Run Code Online (Sandbox Code Playgroud)

我也尝试过只替换q's后跟一个空白字符,但这最终会匹配q每个单词中的最后两个字符.有没有办法替换两个连续的字符,除非后面跟着同一个字符的第三个或第四个字符?如果有帮助,语言是Java.

java regex

2
推荐指数
1
解决办法
639
查看次数

标签 统计

dataframe ×1

java ×1

pyspark ×1

python ×1

regex ×1