MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Bagaimana mengatasi com.mongodb.spark.exceptions.MongoTypeConversionException:Tidak dapat mentransmisikan ... Java Spark

Saya memiliki masalah yang sama dan sampleSize memperbaiki sebagian masalah ini, tetapi tidak menyelesaikannya jika Anda memiliki banyak data.

Berikut adalah solusi bagaimana Anda dapat memperbaikinya. Gunakan pendekatan ini bersama dengan peningkatan sampleSize (dalam kasus saya 100000):

def fix_schema(schema: StructType) -> StructType:
    """Fix spark schema due to inconsistent MongoDB schema collection.

    It fixes such issues like:
        Cannot cast STRING into a NullType
        Cannot cast STRING into a StructType

    :param schema: a source schema taken from a Spark DataFrame to be fixed
    """
    if isinstance(schema, StructType):
        return StructType([fix_schema(field) for field in schema.fields])
    if isinstance(schema, ArrayType):
        return ArrayType(fix_schema(schema.elementType))
    if isinstance(schema, StructField) and is_struct_oid_obj(schema):
        return StructField(name=schema.name, dataType=StringType(), nullable=schema.nullable)
    elif isinstance(schema, StructField):
        return StructField(schema.name, fix_schema(schema.dataType), schema.nullable)
    if isinstance(schema, NullType):
        return StringType()
    return schema


def is_struct_oid_obj(struct_field: StructField) -> bool:
    """
    Checks that our schema has StructType field with single oid name inside

    :param struct_field: a StructField from Spark schema
    :return bool
    """
    return (isinstance(struct_field.dataType, StructType)
            and len(struct_field.dataType.fields) == 1
            and struct_field.dataType.fields[0].name == "oid")


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. DB Grafik vs. DB Dokumen vs. Triplestores

  2. Bagaimana menemukan semua rentang tanggal tumpang tindih dengan rentang tanggal lain di MongoDB?

  3. Mendapatkan Null Pointer Exception Mongo Aggregation Menggunakan Spring Data (Dynamic Fields)

  4. Cara membaca koleksi yang bergantung pada koleksi lain di Meteor

  5. Menemukan Dokumen Tersemat oleh properti tertentu di Mongoose, Node.js, MongodDB