# Spark GraphX Features – An Introductory Guide

## 1. Objective

There are several features of Spark GraphX which enhances its qualities. Hence, in this blog, we will learn GraphX features in** Apache Spark**. Before Spark GraphX features, we will start with the brief introduction of GraphX. Afterward, we will learn all features in detail.

So, let’s start to spark GraphX features in detail.

## 2. What is Spark GraphX?

For graphs and graph-parallel computation, we have *GraphX* API in Spark. It leverages an advantage of growing collection of graph algorithms. Also includes Graph builders to simplify graph analytics tasks.

Basically, it extends the **Spark RDD** with a Resilient Distributed Property Graph. In addition, the property graph is a directed multigraph. It has multiple edges in parallel. Here, every vertex and edge have user-defined properties associated with it. Moreover, parallel edges allow multiple relationships between the same vertices.

## 3. Spark GraphX Features

The features of Spark GraphX are as follows:

### a. Flexibility

We can work with both graphs and computations with Spark GraphX. It includes exploratory analysis, ETL (Extract, Transform & Load), as well as iterative graph. It is possible to view the same data as both graphs, collections, transform and join graphs with RDDs. Also using the Pregel API it is possible to write custom iterative graph algorithms.

### b. Speed

Speed is one of the best features of GraphX. It provides comparable performance to the fastest specialized graph processing systems. It is fastest on comparing with the other graph systems. Even while retaining Spark’s flexibility, fault tolerance and ease of use.

**You must read SparkR DataFrame and DataFrame Operations**

### c. Growing Algorithm Library

Basically, we have a growing library of graph algorithms that Spark GraphX offers. We can choose from it. Some of the popular algorithms such as PageRank, connected components, label propagation. Also includes SVD++, strongly connected components, and triangle count. Let’s learn them in detail:

#### i. PageRank Algorithm

To measure the importance of each vertex in a graph we use PageRank. Basically, it measures by assuming an edge from u to v represents an endorsement of v’s importance by u. We can understand this with a scenario. For example, if a person uses Twitter, and have many followers, then that user will have the high rank.

#### ii. Connected components Algorithm

Basically, this algorithm helps to label each connected component of the graph. Hence, it labels with the ID of its lowest-numbered vertex.

#### iii. Label propagation Algorithm

It is a semi-supervised algorithm that assigns labels to previously unlabeled data points. That is what we call as Label Propagation. Initially, a (generally small) subset of the data points has labels. Afterwards, those labels propagate to further unlabeled points throughout the algorithm.

**Have a look at Apache Spark featurization**

#### iv. SVD++

Singular refers to Singular value decomposition. It takes a rectangular matrix of gene expression data in which the n rows represent the genes while p columns represent the experimental conditions

#### v. Strongly connected components

If there is a path between all pairs of vertices, a directed graph is strongly connected. That strongly connected component (SCC) of a directed graph is a maximal strongly connected subgraph.

#### vi. Triangle count

When it has two adjacent vertices with an edge between them, it is a vertex as part of a triangle. Basically, in the TriangleCount object GraphX implements a triangle counting algorithm. Moreover, that helps to determine the number of triangles passing through each vertex. Also, provides a measure of clustering.

**You must read about Spark paired RDD**

### d. Community

As part of the Apache Spark project, GraphX is also developed. Hence it gets tested and updated with each Spark release.

## 4. Conclusion

As a result, we have learned all the Apache Spark GraphX features. We have also seen how these features enhance the uses of GraphX. Although, if you fell any query regarding, ask freely in the comment section.

**See also – **