kandi background
Explore Kits

Spark-based-Ripley-K-Functions | visual analytics framework for Distributed Ripley

 by   ZPGuiGroupWhu JavaScript Version: Current License: No License

 by   ZPGuiGroupWhu JavaScript Version: Current License: No License

Download this library from

kandi X-RAY | Spark-based-Ripley-K-Functions Summary

Spark-based-Ripley-K-Functions is a JavaScript library typically used in Big Data, Spark applications. Spark-based-Ripley-K-Functions has no bugs, it has no vulnerabilities and it has low support. You can download it from GitHub.
A visual analytics framework for Distributed Ripley's K functions based on Apache Spark, including Space K function, Space-Time K function, Local K function and Cross K function. This framework consists of three parts, i.e., front-end web visualization components, Web service API component and back-end Spark-based algorithm packages.
Support
Support
Quality
Quality
Security
Security
License
License
Reuse
Reuse

kandi-support Support

  • Spark-based-Ripley-K-Functions has a low active ecosystem.
  • It has 21 star(s) with 3 fork(s). There are 1 watchers for this library.
  • It had no major release in the last 12 months.
  • Spark-based-Ripley-K-Functions has no issues reported. There are 10 open pull requests and 0 closed requests.
  • It has a neutral sentiment in the developer community.
  • The latest version of Spark-based-Ripley-K-Functions is current.
This Library - Support
Best in #JavaScript
Average in #JavaScript
This Library - Support
Best in #JavaScript
Average in #JavaScript

quality kandi Quality

  • Spark-based-Ripley-K-Functions has no bugs reported.
This Library - Quality
Best in #JavaScript
Average in #JavaScript
This Library - Quality
Best in #JavaScript
Average in #JavaScript

securitySecurity

  • Spark-based-Ripley-K-Functions has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.
This Library - Security
Best in #JavaScript
Average in #JavaScript
This Library - Security
Best in #JavaScript
Average in #JavaScript

license License

  • Spark-based-Ripley-K-Functions does not have a standard license declared.
  • Check the repository for any license declaration and review the terms closely.
  • Without a license, all rights are reserved, and you cannot use the library in your applications.
This Library - License
Best in #JavaScript
Average in #JavaScript
This Library - License
Best in #JavaScript
Average in #JavaScript

buildReuse

  • Spark-based-Ripley-K-Functions releases are not available. You will need to build from source code and install.
This Library - Reuse
Best in #JavaScript
Average in #JavaScript
This Library - Reuse
Best in #JavaScript
Average in #JavaScript
Top functions reviewed by kandi - BETA

kandi has reviewed Spark-based-Ripley-K-Functions and discovered the below as its top functions. This is intended to give you an instant insight into Spark-based-Ripley-K-Functions implemented functionality, and help decide if they suit your requirements.

  • D3 time format function
  • Computes the clip - line interceptor .
  • initializer for brush event
  • Creates a series
  • Make a clipping clip circle .
  • Computes a clip - point clipping method for the clipping point .
  • Returns D3 locale - number formatting function .
  • Divide a scale function
  • Resample stream
  • Calculates the quadtree of the given data

Spark-based-Ripley-K-Functions Key Features

A visual analytics framework for Distributed Ripley's K functions based on Apache Spark, including Space K function, Space-Time K function, Local K function and Cross K function. This framework consists of three parts, i.e., front-end web visualization components, Web service API component and back-end Spark-based algorithm packages.

Community Discussions

Trending Discussions on Big Data
  • How to group unassociated content
  • Using Spark window with more than one partition when there is no obvious partitioning column
  • What is the best way to store +3 millions records in Firestore?
  • spark-shell throws java.lang.reflect.InvocationTargetException on running
  • For function over multiple rows (i+1)?
  • Filling up shuffle buffer (this may take a while)
  • Designing Twitter Search - How to sort large datasets?
  • Unnest Query optimisation for singular record
  • handling million of rows for lookup operation using python
  • split function does not return any observations with large dataset
Trending Discussions on Big Data

QUESTION

How to group unassociated content

Asked 2022-Apr-15 at 12:43

I have a hive table that records user behavior

like this

userid behavior timestamp url
1 view 1650022601 url1
1 click 1650022602 url2
1 click 1650022614 url3
1 view 1650022617 url4
1 click 1650022622 url5
1 view 1650022626 url7
2 view 1650022628 url8
2 view 1650022631 url9

About 400GB is added to the table every day.

I want to order by timestamp asc, then one 'view' is in a group between another 'view' like this table, the first 3 lines belong to a same group , then subtract the timestamps, like 1650022614 - 1650022601 as the view time.

How to do this?

i try lag and lead function, or scala like this

        val pairRDD: RDD[(Int, String)] = record.map(x => {
            if (StringUtil.isDateString(x.split("\\s+")(0))) {
                partition = partition + 1
                (partition, x)
            } else {
                (partition, x)
            }
        })

or java like this

        LongAccumulator part = spark.sparkContext().longAccumulator("part");

        JavaPairRDD<Long, Row> pairRDD = spark.sql(sql).coalesce(1).javaRDD().mapToPair((PairFunction<Row, Long, Row>) row -> {
            if (row.getAs("event") == "pageview") {
                part.add(1L);
            }
        return new Tuple2<>(part.value(), row);
        });

but when a dataset is very large, this code just stupid.

save me plz

ANSWER

Answered 2022-Apr-15 at 12:43

If you use dataframe, you can build partition by using window that sum a column whose value is 1 when you change partition and 0 if you don't change partition.

You can transform a RDD to a dataframe with sparkSession.createDataframe() method as explained in this answer

Back to your problem. In you case, you change partition every time column behavior is equal to "view". So we can start with this condition:

import org.apache.spark.sql.functions.col

val df1 = df.withColumn("is_view", (col("behavior") === "view").cast("integer"))

You get the following dataframe:

+------+--------+----------+----+-------+
|userid|behavior|timestamp |url |is_view|
+------+--------+----------+----+-------+
|1     |view    |1650022601|url1|1      |
|1     |click   |1650022602|url2|0      |
|1     |click   |1650022614|url3|0      |
|1     |view    |1650022617|url4|1      |
|1     |click   |1650022622|url5|0      |
|1     |view    |1650022626|url7|1      |
|2     |view    |1650022628|url8|1      |
|2     |view    |1650022631|url9|1      |
+------+--------+----------+----+-------+

Then you use a window ordered by timestamp to sum over the is_view column:

import org.apache.spark.sql.expressions.Window
import org.apache.spark.sql.functions.sum

val df2 = df1.withColumn("partition", sum("is_view").over(Window.partitionBy("userid").orderBy("timestamp")))

Which get you the following dataframe:

+------+--------+----------+----+-------+---------+
|userid|behavior|timestamp |url |is_view|partition|
+------+--------+----------+----+-------+---------+
|1     |view    |1650022601|url1|1      |1        |
|1     |click   |1650022602|url2|0      |1        |
|1     |click   |1650022614|url3|0      |1        |
|1     |view    |1650022617|url4|1      |2        |
|1     |click   |1650022622|url5|0      |2        |
|1     |view    |1650022626|url7|1      |3        |
|2     |view    |1650022628|url8|1      |1        |
|2     |view    |1650022631|url9|1      |2        |
+------+--------+----------+----+-------+---------+

Then, you just have to aggregate per userid and partition:

import org.apache.spark.sql.functions.{max, min}

val result = df2.groupBy("userid", "partition")
  .agg((max("timestamp") - min("timestamp")).as("duration"))

And you get the following results:

+------+---------+--------+
|userid|partition|duration|
+------+---------+--------+
|1     |1        |13      |
|1     |2        |5       |
|1     |3        |0       |
|2     |1        |0       |
|2     |2        |0       |
+------+---------+--------+

The complete scala code:

import org.apache.spark.sql.expressions.Window
import org.apache.spark.sql.functions.{col, max, min, sum}

val result = df
  .withColumn("is_view", (col("behavior") === "view").cast("integer"))
  .withColumn("partition", sum("is_view").over(Window.partitionBy("userid").orderBy("timestamp")))
  .groupBy("userid", "partition")
  .agg((max("timestamp") - min("timestamp")).as("duration"))

Source https://stackoverflow.com/questions/71883786

Community Discussions, Code Snippets contain sources that include Stack Exchange Network

Vulnerabilities

No vulnerabilities reported

Install Spark-based-Ripley-K-Functions

You can download it from GitHub.

Support

For any new features, suggestions and bugs create an issue on GitHub. If you have any questions check and ask questions on community page Stack Overflow .

DOWNLOAD this Library from

Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from
over 430 million Knowledge Items
Find more libraries
Reuse Solution Kits and Libraries Curated by Popular Use Cases

Save this library and start creating your kit

Explore Related Topics

Share this Page

share link
Compare JavaScript Libraries with Highest Support
Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from
over 430 million Knowledge Items
Find more libraries
Reuse Solution Kits and Libraries Curated by Popular Use Cases

Save this library and start creating your kit

  • © 2022 Open Weaver Inc.