class CIMDeDup extends CIMRDD with Serializable
Handle duplicate processing.
For each element with id X, if there are other elements with "rdf:ID='X'", this class chooses only one.
This "duplicates" condition arises, for example, when spatial filters are applied to tile large datasets to partition the export task into smaller subsets, for reasons such as parallelization, memory constraints, etc.
A linear element crossing a tile boundary can be exported in either tile, if it can be determined beforehand which tile. A simpler option is to export such objects in all tiles whose spatial extents includes some of the element. It is also nice to include related elements to make each tile self consistent.
These tiles must then be recombined into the full dataset, which is the task for this component - to delete duplicate elements.
Warnings are generated if the deleted elements are not identical to the elements that are retained.
- Alphabetic
- By Inheritance
- CIMDeDup
- Serializable
- Serializable
- CIMRDD
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Instance Constructors
-
new
CIMDeDup(spark: SparkSession, storage: StorageLevel = StorageLevel.MEMORY_AND_DISK_SER)
- spark
The Spark session this class is running in.
- storage
The storage level to cache the resultant RDD.
Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
asDataSet[T <: Product](implicit arg0: ClassTag[T], arg1: scala.reflect.api.JavaUniverse.TypeTag[T], spark: SparkSession): Dataset[T]
Get a typed DataSet for the given class.
Get a typed DataSet for the given class.
- T
The type of RDD.
- spark
The Spark session.
- returns
A typed dataset of the RDD.
- Definition Classes
- CIMRDD
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
biggest(name: String): (Int, (Int, RDD[_])) ⇒ Int
Find the largest integer after the name| pattern in a foldLeft operation.
Find the largest integer after the name| pattern in a foldLeft operation.
- name
the name to check
- Definition Classes
- CIMRDD
-
def
check(element: Element, others: Iterable[Element]): Unit
Compare elements for equality.
Compare elements for equality.
Since all but one element with the same mRID will be deleted, this checks that they really are the same.
It logs a warning if the elements are not equal.
- element
The "primary" element.
- others
The "other" elements, although this choice of primary and other is arbitrary.
-
def
clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native() @HotSpotIntrinsicCandidate()
-
def
deduplicate(elements: Iterable[Element]): Element
Perform deduplication - keep only one element.
Perform deduplication - keep only one element.
- elements
The elements with identical mRID.
- returns
One element (the head of the list) after checking the others are true duplicates.
-
def
do_deduplicate(): RDD[Element]
Replace the Element RDD with a de-duplicated version.
Replace the Element RDD with a de-duplicated version.
Since RDD are immutable, another copy is created containing only unique elements and this replaces the current RDD[Element] referenced by the persistent RDD registry. The old element RDD is renamed to "duplicate_Elements".
The new RDD is cached and checkpointed (if checkpointing is enabled by the Spark context having a CheckpointDir).
- returns
The new element RDD.
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
get[T](implicit arg0: ClassTag[T], spark: SparkSession, log: Logger): RDD[T]
Get the typed RDD.
Get the typed RDD.
Convenience method where the name of the RDD is the same as the contained class type (the usual case).
- T
The type of the RDD, e.g.
RDD[T]
.- spark
The Spark session which persisted the typed RDD.
- log
A logger for error messages.
- returns
The RDD with the given type of objects, e.g.
RDD[ACLineSegment]
.
- Definition Classes
- CIMRDD
-
def
get[T](name: String)(implicit arg0: ClassTag[T], spark: SparkSession, log: Logger): RDD[T]
Get the named RDD.
Get the named RDD.
- T
The type of objects contained in the named RDD.
- name
The name of the RDD, usually the same as the CIM class.
- spark
The Spark session which persisted the named RDD.
- log
A logger for error messages.
- returns
The typed RDD, e.g.
RDD[T]
.
- Definition Classes
- CIMRDD
The RDD of all elements is somewhat special, currently it is named Elements (plural), so this method must be used:
val elements: RDD[Element] = get[Element]("Elements")
Example: -
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @HotSpotIntrinsicCandidate()
-
def
getOrElse[T](implicit arg0: ClassTag[T], spark: SparkSession): RDD[T]
Get the typed RDD or an empty RDD if none was registered.
Get the typed RDD or an empty RDD if none was registered.
Convenience method where the name of the RDD is the same as the contained class type (the usual case).
- T
The type of the RDD, e.g.
RDD[T]
.- spark
The Spark session which persisted the typed RDD.
- returns
The RDD with the given type of objects, e.g.
RDD[ACLineSegment]
, or an empty RDD of the requested type.
- Definition Classes
- CIMRDD
-
def
getOrElse[T](name: String)(implicit arg0: ClassTag[T], spark: SparkSession): RDD[T]
Get the named RDD or else an empty RDD of the requested type.
Get the named RDD or else an empty RDD of the requested type.
- T
The type of objects contained in the named RDD.
- name
The name of the RDD, usually the same as the CIM class.
- spark
The Spark session which persisted the named RDD.
- returns
The typed RDD, e.g.
RDD[T]
, as either the persisted RDD or an empty one if none was found.
- Definition Classes
- CIMRDD
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native() @HotSpotIntrinsicCandidate()
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
def
like(name: String): ((Int, RDD[_])) ⇒ Boolean
Match names with pattern "name|xxx".
Match names with pattern "name|xxx".
- name
the name to match
- returns
true
if the RDD name matches the pattern
- Definition Classes
- CIMRDD
- implicit val log: Logger
-
def
nameOf[T](implicit arg0: ClassTag[T]): String
Get the base name of the CIM class.
Get the base name of the CIM class.
- T
The type of the class.
- returns
The base name of the class.
- Definition Classes
- CIMRDD
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @HotSpotIntrinsicCandidate()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @HotSpotIntrinsicCandidate()
-
def
put[T <: Product](rdd: RDD[T], keep: Boolean = false)(implicit arg0: ClassTag[T], arg1: scala.reflect.api.JavaUniverse.TypeTag[T], spark: SparkSession, storage: StorageLevel): Unit
Persist the typed RDD using the class name, checkpoint it if that is enabled, and create the SQL view for it.
Persist the typed RDD using the class name, checkpoint it if that is enabled, and create the SQL view for it.
- T
The type of RDD.
- rdd
The RDD to persist
- keep
If
true
then don't unpersist any existing RDD with the given name.- spark
The Spark session.
- storage
The storage level for persistence.
- Definition Classes
- CIMRDD
-
def
put[T <: Product](rdd: RDD[T], name: String, keep: Boolean)(implicit arg0: ClassTag[T], arg1: scala.reflect.api.JavaUniverse.TypeTag[T], spark: SparkSession, storage: StorageLevel): Unit
Persist the typed RDD using the given name, checkpoint it if that is enabled, and create the SQL view for it.
Persist the typed RDD using the given name, checkpoint it if that is enabled, and create the SQL view for it.
Since the use of RDD persistence can be problematic for memory reuse, the
keep
parameter has special processing. Whenkeep
istrue
any existing RDD of the same name is renamed toname|n
where n is sequentially increasing to the next available integer. Whenkeep
isfalse
all existing RDD of the above form are unpersisted.This facilitates the use-case where the new RDD depends on the existing one. For example, the
Elements
RDD is rewritten by about, dedup, join, normalize and topological processing, where the new RDD is derived from the original. But when a completely new CIM RDF file is read in,keep=false
will unpersist all the derived RDD.- T
The type of RDD.
- rdd
The RDD to persist
- name
The name under which to persist it.
- keep
If
true
then don't unpersist the existing RDD with the given name.- spark
The Spark session.
- storage
The storage level for persistence.
- returns
The named, viewed and possibly checkpointed original RDD.
- Definition Classes
- CIMRDD
- implicit val session: SparkSession
- implicit val storage_level: StorageLevel
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
test[T](implicit arg0: ClassTag[T], spark: SparkSession): Boolean
Check for the typed RDD.
Check for the typed RDD.
Convenience method where the name of the RDD is the same as the contained class type (the usual case).
- T
The type of the RDD, e.g.
RDD[T]
.- spark
The Spark session which persisted the typed RDD.
- returns
true
if the named RDD exists,false
otherwise.
- Definition Classes
- CIMRDD
-
def
test[T](name: String)(implicit arg0: ClassTag[T], spark: SparkSession): Boolean
Check for the named RDD.
Check for the named RDD.
- T
The type of objects contained in the named RDD.
- name
The name of the RDD, usually the same as the CIM class.
- spark
The Spark session which persisted the named RDD.
- returns
true
if the named RDD exists,false
otherwise.
- Definition Classes
- CIMRDD
-
def
toInt(s: String): Option[Int]
- Definition Classes
- CIMRDD
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
Deprecated Value Members
-
def
finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] ) @Deprecated @deprecated
- Deprecated
(Since version ) see corresponding Javadoc for more information.