MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Cách giải quyết com.mongodb.spark.exceptions.MongoTypeConversionException:Không thể truyền ... Java Spark

Tôi đã gặp vấn đề tương tự và sampleSize khắc phục một phần sự cố này, nhưng không giải quyết được nếu bạn có nhiều dữ liệu.

Đây là giải pháp làm thế nào bạn có thể khắc phục điều này. Sử dụng phương pháp này cùng với kích thước mẫu tăng lên (trong trường hợp của tôi là 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. Cài đặt MongoDB trong Ubuntu 14.04 không thành công

  2. Lỗi:Lỗi mạng khi cố gắng chạy lệnh 'saslStart' trên máy chủ lưu trữ 'localhost:27017'

  3. Tại sao PyMongo 3 lại cho ServerSelectionTimeoutError?

  4. Truy xuất chỉ mục của mục trong mảng trong MongoDB

  5. MongoDB $ tháng