我是 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) 我有一个看起来像这样的字符串:qqq Eqq Eqqq Cqq Eqq Fq.我想用一个替换所有有两个连续字符的序列(在这种情况下qq),h所需的输出如下所示:qqq Eh Eqqq Ch Eh Fq
但是,我不希望正则表达式匹配超过两个q(qqq或qqqq)的序列,并使字符串看起来像这样: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.