我是Scala Collections的新手,目前我想将给定的字符串列表分成两个列表的元组(List[String], List[String]),其中包含回文字符串列表和其余输入字符串列表.
例如,如果输入List("racecar", "abcd", "lilil", "effg")
应该是(List("racecar", "lilil"), List("abcd", "effg"))
我有一个使用过滤器的解决方案.但是,目前,尝试使用foldLeft优化我的解决方案.我的新方法如下:
def stringTuples2(strings: List[String]): (List[String], List[String]) = {
strings.foldLeft((List[String](), List[String]()))((b, a) => {
if (a.equals(a.reverse)) { b._1 :+ a; b }
else { b._2 :+ a; b }
})}
Run Code Online (Sandbox Code Playgroud)
I am not sure, what I am doing wrong, but the output for this solution is Tuple of two empty lists, i.e. (List(), List()).
Help is appreciated. Thanks!
我只是花了几个小时来探索它Play Framework (2.5.1),我很困惑,为什么你会创建一个Format你已经定义Reads和Writes.通过为您的类定义Reads和Writes,您没有定义将类转换为和从中转换所需的所有功能JsValue吗?
如何使用以下两个数据集计算 Spark Scala 中每个位置的平均工资?
File1.csv(第4列是工资)
Ram, 30, Engineer, 40000
Bala, 27, Doctor, 30000
Hari, 33, Engineer, 50000
Siva, 35, Doctor, 60000
Run Code Online (Sandbox Code Playgroud)
File2.csv(第2列是位置)
Hari, Bangalore
Ram, Chennai
Bala, Bangalore
Siva, Chennai
Run Code Online (Sandbox Code Playgroud)
以上文件未排序。需要加入这两个文件并找到每个地点的平均工资。我尝试使用下面的代码但无法成功。
val salary = sc.textFile("File1.csv").map(e => e.split(","))
val location = sc.textFile("File2.csv").map(e.split(","))
val joined = salary.map(e=>(e(0),e(3))).join(location.map(e=>(e(0),e(1)))
val joinedData = joined.sortByKey()
val finalData = joinedData.map(v => (v._1,v._2._1._1,v._2._2))
val aggregatedDF = finalData.map(e=> e.groupby(e(2)).agg(avg(e(1))))
aggregatedDF.repartition(1).saveAsTextFile("output.txt")
Run Code Online (Sandbox Code Playgroud)
请帮助编写代码和示例输出,看看它的外观。
非常感谢
例如,我有两列
Code Department
E. ECE
C. CSE
Run Code Online (Sandbox Code Playgroud)
我想将其转换为地图类型,如下所示
Map( E -> ECE, C -> CSE)
Run Code Online (Sandbox Code Playgroud)
注意 - 当前使用带有 Scala 的 spark 2.2。
首先,我在代码开头有两个变量。
numericColumnNames = []
categoricalColumnsNames = [];
Run Code Online (Sandbox Code Playgroud)
然后在 main 方法中,我为这些值赋值
def main():
#clickRDD = sc.textFile("s3a://wer-display-ads/day_0_1000.csv");
clickRDD = sc.textFile("data/day_0_1000.csv");
numericColumnNames , categoricalColumnsNames = getColumnStructure();
Run Code Online (Sandbox Code Playgroud)
然后当我想在以下函数中使用这些变量时,这些变量没有更新并且为空
def dataToVectorForLinear(clickDF):
print (categoricalColumnsNames) ## why this list is empty
clickDF = oneHotEncoding(clickDF,categoricalColumnsNames)
Run Code Online (Sandbox Code Playgroud)
可惜我找不到问题所在?感谢您的帮助
我使用ElasticSearch-Hadoop Library从ElsticSearch获取数据.
JavaPairRDD<String, Map<String, Object>> esRDD = JavaEsSpark.esRDD(sc);
Run Code Online (Sandbox Code Playgroud)
现在我有了JavaPairRDD.我想在这个RDD上使用MLLib中的Random Forest.所以我将它转换为JavaPairRDD.toRDD(esRDD)这将给我RDD.使用RDD我再次转换为JavaRDD
JavaRDD<LabeledPoint>[] splits = (JavaRDD.fromRDD(JavaPairRDD.toRDD(esRDD),
esRDD.classTag())).randomSplit(new double[] { 0.5, 0.5 });
JavaRDD<LabeledPoint> trainingData = splits[0];
JavaRDD<LabeledPoint> testData = splits[1];
Run Code Online (Sandbox Code Playgroud)
我想将trainingData和TestData传递给Random Forest算法,但它在编译时给出了转换异常.
类型不匹配:无法从JavaRDD [Tuple2 [String,Map [String,Object]]] []转换为JavaRDD [LabeledPoint] []
添加方括号,小于和大于符号不起作用
任何人都可以向我推荐铸造的正确方法.我是Spark Datastrucutres的新手.
收到一个Future[httpResponse]我试图发送消息后,sender但我失去了参考sender.
这是我的接收方法的代码:
def receive = {
case Seq(method: HttpMethod, endpoint: String, payload: String) ? {
// I have the correct sender reference
implicit val materializer: ActorMaterializer = ActorMaterializer(ActorMaterializerSettings(context.system)) // needed by singleRequest method below
// I have the correct sender reference
val response: Future[HttpResponse] = Http(context.system).singleRequest(HttpRequest(method = method, uri = endpoint, entity = payload))
println("http request sent")
// I have the correct sender reference
response onSuccess {
case HttpResponse(statusCode, _, entity, _) ? { …Run Code Online (Sandbox Code Playgroud) 我正在使用Spark和Scala。我有以下代码在spark-shell上运行良好,但是当我尝试将其移至Intelij时会抛出错误,指出无法找到split。
我缺少什么,需要导入split才能正常工作
var outputDF = inputDF.withColumn(srcColumn,
split(inputDF.col(srcColumn),splitBy).getItem(selectIndex))
Run Code Online (Sandbox Code Playgroud) 我有一个火花数据框,它具有由collect_set函数形成的2列。我想将这2列集合合并为1列集合。我应该怎么做?他们都是套弦
对于实例,我通过调用collect_set形成了2列
Fruits | Meat
[Apple,Orange,Pear] [Beef, Chicken, Pork]
Run Code Online (Sandbox Code Playgroud)
我如何将其变成:
Food
[Apple,Orange,Pear, Beef, Chicken, Pork]
Run Code Online (Sandbox Code Playgroud)
非常感谢您的提前帮助
我正在尝试使用 Spark 2.0 中的以下代码创建数据帧。在 Jupyter/Console 中执行代码时,我面临以下错误。有人可以帮助我如何摆脱这个错误吗?
错误:
Py4JJavaError:调用 o34.csv 时发生错误。: java.lang.RuntimeException: 为 csv 找到多个源(org.apache.spark.sql.execution.datasources.csv.CSVFileFormat, com.databricks.spark.csv.DefaultSource15),请指定完全限定的类名。在 scala.sys.package$.error(package.scala:27)
代码:
from pyspark.sql import SparkSession
if __name__ == "__main__":
session = SparkSession.builder.master('local')
.appName("RealEstateSurvey").getOrCreate()
df = session \
.read \
.option("inferSchema", value = True) \
.option('header','true') \
.csv("/home/senthiljdpm/RealEstate.csv")
print("=== Print out schema ===")
session.stop()
Run Code Online (Sandbox Code Playgroud) apache-spark ×7
scala ×5
pyspark ×3
pyspark-sql ×2
akka ×1
akka-http ×1
foldleft ×1
java ×1
join ×1
json ×1
list ×1
python-3.x ×1
rdd ×1
tuples ×1