Я столкнулся с какой-то странной «ошибкой» при использовании Spark Connector mongoDB для сохранения кадра данных, созданного с помощью Spark NLP (JohnSnowLabs). Самое смешное, что на самом деле я не получаю ошибку, вот мой код, и я опишу, что происходит:
# Build the SparkSession
spark = SparkSession.builder \
.master("local") \
.appName("TrumpTweets") \
.config("spark.executor.memory", "1gb") \
.config("spark.mongodb.input.uri", "mongodb://127.0.0.1/trumptweets.tweets") \
.config("spark.mongodb.output.uri", "mongodb://127.0.0.1/trumptweets.tweets") \
.config("spark.jars.packages", "JohnSnowLabs:spark-nlp:2.3.4")\
.getOrCreate()
import sparknlp
from sparknlp.pretrained import PretrainedPipeline
# setup the (pretrained pipeline)
sentiment_pipeline = PretrainedPipeline("analyze_sentiment", "en")
# transform the pipeline a dataframe
sentiment_df = sentiment_pipeline.transform(df)
sentiment_df.show()
OUTPUT: +--------------------+-------------------+--------------+-------------------+----------+-------------+------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+
| _id| created_at|favorite_count| id_str|is_retweet|retweet_count| source| text| document| sentence| token| checked| sentiment|
+--------------------+-------------------+--------------+-------------------+----------+-------------+------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+
|[5e396c5bfb66a775...|2019-11-29 14:06:02| 213355|1200415623798501378| false| 40277|Twitter for iPhone|Just returned to ...|[[document, 0, 12...|[[document, 0, 12...|[[token, 0, 3, Ju...|[[token, 0, 3, Ju...|[[sentiment, 0, 1...|
|[5e396c5bfb66a775...|2019-11-29 01:25:13| 183578|1200224161576017921| false| 43337|Twitter for iPhone|I thought Newswee...|[[document, 0, 39...|[[document, 0, 38...|[[token, 0, 0, I,...|[[token, 0, 0, I,...|[[sentiment, 0, 3...|
|[5e396c5bfb66a775...|2019-11-28 21:42:19| 285728|1200168067075981313| false| 68741|Twitter for iPhone|HAPPY THANKSGIVING! |[[document, 0, 19...|[[document, 0, 18...|[[token, 0, 4, HA...|[[token, 0, 4, HA...|[[sentiment, 0, 1...|
|[5e396c5bfb66a775...|2019-11-28 13:21:29| 196423|1200042025699201026| false| 33867|Twitter for iPhone|HAPPY THANKSGIVING! |[[document, 0, 19...|[[document, 0, 18...|[[token, 0, 4, HA...|[[token, 0, 4, HA...|[[sentiment, 0, 1...|
|[5e396c5bfb66a775...|2019-11-27 22:11:03| 179461|1199812908257095680| false| 28158|Twitter for iPhone|95% Approval Rati...|[[document, 0, 54...|[[document, 0, 43...|[[token, 0, 2, 95...|[[token, 0, 2, 95...|[[sentiment, 0, 4...|
|[5e396c5bfb66a775...|2019-11-27 22:09:22| 133332|1199812482853933056| false| 24290|Twitter for iPhone|New
sentiment_df.write.format("com.mongodb.spark.sql.DefaultSource").mode("overwrite").save() #NowEmpty
sentiment_df = spark.read.format("com.mongodb.spark.sql.DefaultSource").load()
sentiment_df.show()
++
||
++
++
Я использовал MongoDB Connector в приведенном выше файле, чтобы просто сохранить фрейм данных в начало, это просто отлично работает. Как вы можете видеть, dataframe sentiment_df не пустой, но после вставки его с помощью .save () он пуст в базе данных и, так или иначе, сам dataframe (local) остается пустым даже после перезаписи его новым определением.
Я полагаю, это какая-то проблема с синтаксисом?
Большое спасибо за вашу помощь!