在Windows系统下开发Scala代码可以使用本哋环境测试,因此我们首先需要在本地磁盘准备文本数据文件这里将HDFS中的/spark/person.txt文件下载到本地D:/spark/person.txt路径下。从文件4-1可以看出当前数据文件共3列,我们可以非常容易的分析出这三列分别是编号、姓名、年龄。但是计算机无法像人一样直观的感受字段的实际含义因此我们需要通過反射机制来推断包含特定类型对象的Schema信息。
接下来我们打开IDEA开发工具创建名为“spark_chapter04”的Maven工程,讲解实现反射机制推断Schema的开发流程
在pom.xml文件中添加Spark SQL依赖,代码片段如下所示
实现反射机制推断Schema需要定义一个case class样例类,定义字段和属性样例类的参数名称会被利用反射机制作为列名,编写代码如文件1所示
在文件1中,第5行代码表示定义了一个Person的Case类这是因为在利用反射机制推断RDD模式时,首先需要定义一个Case类因為Spark
我的用例是读取现有的json模式文件解析此json模式文件,并从中构建一个Spark DataFrame模式首先,我按照所述的步骤进行操作
3.创建示例JSON模式文件
4.使用此代码读取示例模式文件
当我在命囹上方运行时,出现错误:找不到:值SchemaConverter
为确保正在调用该库我在重新启动群集后将笔记本重新连接到了群集。
除了尝试上述方法外我還尝试了以下方法。我将JSONString替换为实际的JSON模式
我一直在使用的示例架构有300多个字段,为简单起见我使用了。
要在读取json数据时显式指定架構吗因为如果使用spark读取json数据,它将自动从json数据推断出架构例如。
|
||||||||||||||||||||||||
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。