java.lang.NoSuchFieldError: DECIMAL128 mongoDB spark
how to read data from mongodb in spark python
spark read from mongodb
spark mongodb query
mongodb spark connector authentication
databricks spark mongodb connector
could not initialize class com/mongodb spark config readconfig
bson spark
I'm writing a spark job using pyspark
; I should only read from mongoDB
collection and print the content on the screen; the code is the following:
import pyspark from pyspark.sql import SparkSession my_spark = SparkSession.builder.appName("myApp").config("spark.mongodb.input.uri", "mongodb://127.0.0.1/marco.weather_test").config("spark.mongodb.output.uri", "mongodb://127.0.0.1/marco.out").getOrCreate() df = my_spark.read.format("com.mongodb.spark.sql.DefaultSource").option("uri", "mongodb://127.0.0.1/marco.weather_test").load() #df.printSchema() df.show()
the problem is that when I want to print the schema the job works, but when I want to print the content of the dataFrame with show()
function I get back the error:
#java.lang.NoSuchFieldError: DECIMAL128
the command I use is:
#bin/spark-submit --packages org.mongodb.spark:mongo-spark-connector_2.11:2.2.3 /home/erca/Scrivania/proveTesi/test_batch.py
I got the same error due to wrong jar is used for mongo-java-driver. The NoSuchFieldError is raised from
org.bson.BsonType.Decimal128
, and the field Decimal128 is added in class BsonType after mongo-java-driver 3.4。While the
org.mongodb.spark:mongo-spark-connector_2.11:2.2.4
contains mongo-java-driver 3.6.2, a existing jar "mongo-java-driver" with version 3.2.1 is located in driverExtraClassPath.
Just start the spark-shell with verbose:
spark-shell --verbose
i.e. the output:
*** *** Parsed arguments: master local[*] deployMode null executorMemory 1024m executorCores 1 totalExecutorCores null propertiesFile /etc/ecm/spark-conf/spark-defaults.conf driverMemory 1024m driverCores null driverExtraClassPath /opt/apps/extra-jars/* driverExtraLibraryPath /usr/lib/hadoop-current/lib/native *** ***
and pay attention to the driverExtraClassPath
, driverExtraLibraryPath
.
Check these paths, and remove mongo-java-driver
if it exists within these paths.
java.lang.NoSuchFieldError:DECIMAL128 mongoDB spark, Pass a JavaSparkContext to MongoSpark.load() to read from MongoDB into a JavaMongoRDD . package com.mongodb.spark_examples; import java.util. Returns an instance of decimal.Decimal for this Decimal128. bson.decimal128.create_decimal128_context ¶ Returns an instance of decimal.Context appropriate for working with IEEE-754 128-bit decimal floating point values.
Importing the library explicitly might solve the issue or give you a better error message for debugging.
import org.bson.types.Decimal128
python, Not able to Show/Write from spark DF read using mongo spark at java.util.concurrent. runWorker(ThreadPoolExecutor.java:1142). Finally Able to debug and fix the issue. The Issue was with the installation as one of the data nodes are having older version of parquet Jars(5.2 cdh distribution).
To BSON jar I a dded a version major and it worked
(In gradle)
compile group: 'org.mongodb', name: 'bson', version: '3.10.2', 'force': "true"
mongo-spark/1-sparkSQL.md at master · mongodb/mongo-spark , java.lang.Object. org.bson.types.Decimal128. All Implemented Interfaces: Serializable A constant holding a Not-a-Number (NaN) value of type Decimal128 . The Mongo Spark Connector provides the com.mongodb.spark.sql.DefaultSource class that creates Datasets from MongoDB. However, the easiest way to create a DataFrame is by using the MongoSpark helper: val df = MongoSpark .load(sparkSession) // Uses the SparkConf df.printSchema()
Read from MongoDB, Я подозреваю, что у вас есть несколько версий mongo-java-driver jar в вашем classpath. java.lang.NoSuchFieldError: ACKNOWLEDGED at com.mongodb. java.lang.NoSuchFieldError: DECIMAL128 mongoDB Искра. Я пишу задание spark с использованием pyspark ; я должен только читать из коллекции mongo-spark / src / main / scala / com / mongodb / spark / sql / MapFunctions.scala Find file Copy path rozza Added WriteConfig.extendedBsonTypes setting 807ae92 Jun 6, 2019
[SPARK-172] Not able to Show/Write from spark , Java decimal128. lang. double has a precision of 15 or 16 significant decimal digits. AutoCloseable NoSuchFieldError: DECIMAL128 mongoDB spark. Python Spark Shell. This tutorial uses the pyspark shell, but the code works with self-contained Python applications as well. When starting the pyspark shell, you can specify: the --packages option to download the MongoDB Spark Connector package. The following package is available: mongo-spark-connector_2.11 for use with Scala 2.11.x
Decimal128, Here, you're using your own build of Spark against an older version of Hive than what's in CDH. That might mostly work, but you're seeing the problems in compiling and running vs different versions.
Comments
- Anyone ever found the solution to this?