I am using spark and scala on jdk1.8.I am new to Scala. I am collecting a list of objects as :
val externalEntities = getExternalGenericExtractFiles()
That functions returns (from Java world):
public List<GenericExtractExternalEntity> getExternalGenericExtractFiles()
{
return externalGenericExtractFiles;
}
Now I am trying :
externalEntities.forEach( externalEntity =>
sqlContext.read.format(externalEntity.getExtractfileType)
.option("compression", externalEntity.getCompressionCodec)
.option("delimiter", externalEntity.getExtractDelimiter)
.option("header", if (externalEntity.getHasHeader.toUpperCase == "Y") "true" else "false")
.load(externalEntity.getFilePath)
.createOrReplaceTempView(externalEntity.getExtractName)
)
and getting error :
error: missing parameter type
[ERROR] externalEntities.forEach(externalEntity =>
I thought Scala is capable of inferring type. What am I missing here?
If I try just one object from the list, it seems fine like if I do
val externalEntity= getExternalGenericExtractFiles().get(0)
sqlContext.read.format(externalEntity.getExtractfileType)
.option("compression", externalEntity.getCompressionCodec)
.option("delimiter", externalEntity.getExtractDelimiter)
.option("header", if (externalEntity.getHasHeader.toUpperCase == "Y") "true" else "false")
.load(externalEntity.getFilePath)
.createOrReplaceTempView(externalEntity.getExtractName)
May I get any insight on what is happening and/or how to resolve? Thanks in advance
forEachyou are using is actually a javaforEach, not the scala one.val l: java.util.List[Integer] = new java.util.LinkedList[java.lang.Integer](),l.add(0),l.forEach(x => println(x + 1)). Can you provide a MCVE we could test?