2017-01-26 5 views
0

ich den Code von ALS versuchen in Flink Version 1.1.3 mit:Apache Flink ALS mit ids in Long statt Int

mvn archetype:generate        \ 
    -DarchetypeGroupId=org.apache.flink   \ 
    -DarchetypeArtifactId=flink-quickstart-scala \ 
    -DarchetypeVersion=1.1.3      \ 
    -DgroupId=org.apache.flink.quickstart   \ 
    -DartifactId=flink-scala-project    \ 
    -Dversion=0.1         \ 
    -Dpackage=org.apache.flink.quickstart   \ 
    -DinteractiveMode=false 

Ich verfolge den Beispielcode in: https://ci.apache.org/projects/flink/flink-docs-release-1.2/dev/libs/ml/als.html und änderte den Int für die lange im Dataset

val env = ExecutionEnvironment.getExecutionEnvironment 
val csvInput: DataSet[(Long, Long, Double)] = env.readCsvFile[(Long, Long, Double)]("tmp-contactos.csv") 

// Setup the ALS learner 
val als = ALS() 
    .setIterations(10) 
    .setNumFactors(10) 
    .setBlocks(100) 


// Set the other parameters via a parameter map 
val parameters = ParameterMap() 
    .add(ALS.Lambda, 0.9) 
    .add(ALS.Seed, 42L) 

// Calculate the factorization 
als.fit(csvInput, parameters) 

Aber es wirft in runetime:

Exception in thread "main" java.lang.RuntimeException: There is no FitOperation defined for org.apache.flink.ml.recommendation.ALS which trains on a DataSet[(Long, Int, Double)] 
at org.apache.flink.ml.pipeline.Estimator$$anon$4.fit(Estimator.scala:85) 
at org.apache.flink.ml.pipeline.Estimator$class.fit(Estimator.scala:55) 
at org.apache.flink.ml.recommendation.ALS.fit(ALS.scala:122) 
at org.apache.flink.quickstart.BatchJob$.main(BatchJob.scala:119) 
at org.apache.flink.quickstart.BatchJob.main(BatchJob.scala) 

es ist posible zu verwenden Longs statt Ints ??

Ich suchte und fand dies für die Version 0.9, aber nichts für 1.1.13:
https://issues.apache.org/jira/browse/FLINK-2211

Antwort

0

Bisher ist es nicht offiziell unterstützt, aber ich habe a branch geschaffen, wo ich diese Einschränkung behoben haben. Sie können diesen Zweig ausprobieren. Ich bringe es zu Flink, damit es in der nächsten Zeit Teil des Meisters wird.